6.用户输入和while循环
6.1 函数input()的工作原理
函数input()让程序暂停运行,等待用户输入一些文本。获取用户输入后,Python将其赋给一个变量,以方便你使用。
message = input("Tell me something,and I will repeat it back to you:") print(message) #结果如下: #Tell me something,and I will repeat it back to you:
6.1.1 编写清晰的程序
name = input("Please enter your name:") print(f"\nHello,{name}!") #结果如下: #Please enter your name:Eric #Hello,Eric!
提示超过一行
prompt = "If you tell us who you are, we can personalize the message you see." prompt += "\nWhat id your first name?" name =input(prompt) print(f"\nHello,{name}!") #结果如下: #If you tell us who you are, we can personalize the message you see. #What id your first name?Eric #Hello,Eric!
6.1.2 使用int()来获取数值输入
判断一个人是否满足坐过山车的身高要求
height = input("How tall are you, in inches?") height =int(height) if height >= 48: print("\nYou're tall enough to ride!") else: print("\nYou'll be able to ride when you're a little older.") #结果如下 #How tall are you, in inches?71 #You're tall enough to ride!
6.1.3 求模运算
判断一个数是奇数还是偶数
number = input("Enter a number, and I'll tell you if it's even or odd:") number = int(number) if number % 2 == 0: print(f"\nThe number {number} is even.") else: print(f"\nThe number {number} is odd.") #结果如下: #Enter a number, and I'll tell you if it's even or odd:42 #The number 42 is even.
6.2 while循环简介
for循环用于针对集合中的每个元素都执行一个代码块,而while循环则不断运行,直到指定的条件不满足为止。
5.2.1 使用while循环
current_number = 1 while current_number <=5: print(current_number) current_number += 1 #结果如下: #1 #2 #3 #4 #5
6.2.2 让用户选择何时退出
prompt = "Tell me something, and I'll repeat it back to you:" prompt += "\nEnter 'quit' to end the program." message = "" while message !='quit': message = input(prompt) print(message) #结果如下: #Tell me something, and I'll repeat it back to you: #Enter 'quit' to end the program.Hello everyone #Hello everyone #Tell me something, and I'll repeat it back to you: #Enter 'quit' to end the program.hello again #hello again #Tell me something, and I'll repeat it back to you: #Enter 'quit' to end the program.quit #quit
程序将quit打印了出来,为修复这种问题,只需使用一个简单的if测试
prompt = "Tell me something, and I'll repeat it back to you:" prompt += "\nEnter 'quit' to end the program." message = "" while message != 'quit': message = input(prompt) if message != 'quit': print(message) #结果如下: #Tell me something, and I'll repeat it back to you: #Enter 'quit' to end the program.Hello everyone #Hello everyone #Tell me something, and I'll repeat it back to you: #Enter 'quit' to end the program.hello again #hello again #Tell me something, and I'll repeat it back to you: #Enter 'quit' to end the program.quit
6.2.3 使用标志
在要求很多条件都满足才能继续运行的程序中,可定义一个变量,用于判断整个程序是否处于活动状态,这个变量称为标志(flag),充当程序的交通信号灯。可以让程序在标志为True时继续运行,并在任何事件导致标志的值为False时让程序停止运行。
prompt = "Tell me something, and I'll repeat it back to you:" prompt += "\nEnter 'quit' to end the program." active = True while active: message = input(prompt) if message == 'quit': active = False else: print(message)
6.2.4 使用break退出循环
break退出整个循环
prompt = "\nPlease enter the name of a city you have visited:" prompt += "\n(Enter 'quit' when you are finished.)" while True: city = input(prompt) if city == 'quit': break else: print(f"I'd love to go to {city.title()}!") #结果如下: #Please enter the name of a city you have visited: #(Enter 'quit' when you are finished.)New York #I'd love to go to New York! #Please enter the name of a city you have visited: #(Enter 'quit' when you are finished.)San Francisco #I'd love to go to San Francisco! #Please enter the name of a city you have visited: #(Enter 'quit' when you are finished.)quit
6.2.5 在循环中使用continue
continue退出当前循环
current_number = 0 while current_number <10: current_number += 1 if current_number % 2 ==0: continue print(current_number) #结果如下: #1 #3 #5 #7 #9
6.2.6 避免无限循环
x = 1 while x <= 5: print(x) #结果如下: #1 #1 #1 #可按Ctrl+C,也可关闭显示程序输出的终端窗口
6.3 使用while循环来处理列表和字典
6.3.1 在列表之间移动元素
一个列表包含新注册但还未验证的网站用户。验证这些用户后,如何将他们移到另一个已验证的用户列表中呢?
# 首先,创建一个待验证用户列表 # 和一个用于存储已验证用户的空列表 unconfirmed_users = ['alice','brain','candace'] confirmed_users = [] #验证每个用户,知道没有未验证用户为止 #将每个经过验证的用户都移到已验证用户列表中 while unconfirmed_users: current_user = unconfirmed_users.pop() print(f"Verifying user:{current_user.title()}") confirmed_users.append(current_user) #显示所有已验证的用户 print("\nThe following users have been confirmed:") for confirmed_user in confirmed_users: print(confirmed_user.title()) #Verifying user:Candace #Verifying user:Brain #Verifying user:Alice #The following users have been confirmed: #Candace #Brain #Alice
6.3.2 删除为特定值的所有列表元素
pets = ['dog','cat','goldfish','cat','tabbit','cat'] print(pets) while 'cat' in pets: pets.remove('cat') print(pets) #结果如下: #['dog', 'cat', 'goldfish', 'cat', 'tabbit', 'cat'] #['dog', 'goldfish', 'tabbit']
6.3.3 使用用户输入来填充字典
responses = {} #设置一个标志,指出调查是否继续 polling_active = True while polling_active: #提示输入被调查者的名字和回答 name = input("\nWhat is your name?") response = input("Which montain would you like to climb someday?") #将回答存储在字典中 responses[name] = response #看看是否还有人要参与调查 repeat = input("Would you like to let another person reapond?(yes/no)") if repeat == 'no': polling_active = False #调查结束,显示结果 print("\n--- Poll Result ---") for name, response in responses.items(): print(f"{name} would like to climb {response}.") #结果如下: #What is your name?Eric #Which montain would you like to climb someday?Denali #Would you like to let another person reapond?(yes/no)yes #What is your name?lynn #Which montain would you like to climb someday?Devil's Thumb #Would you like to let another person reapond?(yes/no)no #--- Poll Result --- #Eric would like to climb Denali. #lynn would like to climb Devil's Thumb.
浙公网安备 33010602011771号