# 用户输入和while循环 # 函数input()的工作原理 # 函数input()让程序暂停运行,等待用户输入一些文本,获取用户输入后,python将其存储在一个变量中,以方便你使用 # 例如下面的程序让用户输入一些文本,再将这些文本呈现给用户 massage = input("请输入文本:") print(massage) # 编写清晰的程序 # 每当你使用函数input()时,都应指定清晰而易于明白的提示,准确的指出你希望用户提供什么样的信息-指出用户该输入任何信息的提示都行 # 如下所示: name = input("请输入你的名字:") print("Hello,"+name+"!") # 通过在提示末尾(这里指冒号后面)包含一个空格,可将提示与用户输入分开,让用户清楚地知道其输入始于何处 # 有时候,提示可能超过一行,例如:你可能需要指出获取特定输入的原因。在这种情况下,可将提示储存在一个变量中,再将该变量传递给函数input # 这样即使提示超过一行,input()语句也能非常清晰 prompt = "If you tell us who you are, we can personalize the messages you see." prompt += "\nWhat is your first name? " name = input(prompt) print("\nHello,"+name+"!") # 这个示例演示了一种创建多行字符串的方式,第一行消息的前半部分储存在变量prompt中: # 在第二行中,运算符 += 在储存在prompt中的字符串末尾添加一个字符串 # 最终横跨两行,并在问好后面包含一个空格,也是出于清晰考虑 # 使用int()来获取数值输入 # 使用函数input()时,python将用户输入解读为字符串,看下面让用户输入年龄的解释器会话: age = input("请输入你的年龄:") print(age) # 我们请求python提供变量age的值时,它返回的是用户输入的数值的字符串表示 # 我们怎么知道python将输入解读成了字符串,因为这个数字用引号括起了 # 如果我们只想打印输入,这一点问题都没有,但如果你试图将输入作为数字使用就会引发错误 # age >=18 # TypeError: '>=' not supported between instances of 'str' and 'int' # python会引发错误,因为它无法将字符串和整数进行比较,不能将储存在age中的字符串与数字18进行比较 # 为解决这个问题,可使用函数int(),它让python将输入视为数值,函数int()将数字的字符串表示转换为数值表示,如下所示: # age = int(age) # age >= 18 # 如何在实际程序中使用函数int()呢?请看下面的程序,它判断一个人是否满足坐过山车的身高要求: height = input("请输入你的身高:") height = int(height) if height >= 36: print("\n你的身高可以乘坐过山车!") else: print("\n你的身高不够乘坐过山车!") # 将数值输入用于计算和比较前,务必将其转换为数值表示。 # 求模运算符: # 处理数值信息时,求模运算符(%)是一个很有用的工具,它将两个数相除并返回余数: print(4 % 3) print(5 % 3) print(6 % 3) print(7 % 3) # 求模运算符不会指出一个数是另一个数的多少倍,而只指出余数多少 # 如果一个数可被另一个数整除,余数就为0,因此求模运算符将返回0,你可利用这一点来判断一个数是奇数还是偶数: number = input("请输入一个数字判断此数字是奇数还是偶数:") number = int(number) if number % 2 == 0: print("你输入的数字是偶数!") else: print("你输入的数字是奇数!") # while 循环简介 # for循环用于针对集合中的每个元素的一个代码块,而while循环不断地运行,直到指定的条件不满足为止 # 使用while循环 # 你可以使用while循环来数数,例如,下面的while循环从1数到5 current_number = 1 while current_number <= 5: print(current_number) current_number += 1 # 我们将current_number设置为1,从而指定从1开始数,接下来的while循环被设置成这样: # 只要current_number小于或等于5,就接着运行这个循环,循环中的代码打印current_number的值,在使用代码current_number += 1 # (代码 current_number = current_number + 1 的简写)将其值加1 # 让用户选择何时退出: # 可使用while循环让程序在用户愿意时不断的运行,如下面的程序python所示,在其中定义一个退出值,只要用户输入的不是这个值程序就接着运行 prompt = "请输入一条信息(输入“退出”即可退出本程序):" prompt += "\n请输入信息:" message = "" while message != "退出": message = input(prompt) if message != "退出": print(message) # 使用一个简单的if语句,可以防止打印出字符串 退出 # 使用标志 # 在要求很多条件都满足才继续运行的程序中,可定义一个变量,用于判断整个程序是否处于活动状态,这个变量被称为标志,充当了程序的交通信号灯 # 下面示例,判断程序是否应继续运行: prompt = "请输入一条信息(输入“退出”即可退出本程序):" prompt += "\n请输入信息:" active = "退出" while active: message = input(prompt) if message == "退出": active = False else: print(message) # 在while 循环中,我们在用户输入后使用一条if语句来检查变量message的值,如果用户输入的是:退出 ,我们就将变量设置为False,这将导致while循环不在继续执行 # 如果用户输入的不是:退出 ,我们就将输入作为一条信息打印出来 # 使用break退出循环 # 要立即退出while循环,不在运行循环中余下的代码,也不管条件的测试结果如何,可使用break语句 # break语句用于控制程序流程,可使用它来控制哪些代码将执行,哪些代码行 不执行,从而让程序按你的要求执行你要执行的代码: # 例如,来看一个用户指出他到过哪些地方的程序,在这个程序中,我们可以在用户输入‘退出’后使用break语句立即退出循环: prompt = "请输入一条信息(输入“退出”即可退出本程序):" prompt += "\n请输入信息:" while True: message = input(prompt) if message == "退出": break else: print("你输入的信息是:" + message + "!") # 以while True 打头的循环将不断运行,直到遇到break语句。 # 这个程序中的循环不断输入用户的字符,直到输入'退出'为止,用户输入'退出'后 将执行break语句,导致python退出循环 # 注意: # 在python循环中都可以使用break语句,例如: # 可使用break语句来退出遍历列表或字典的for循环 # 在循环中使用continue # 要返回到循环开头,并根据条件测试结果决定是否继续执行循环,可使用continue语句 # 它不像break语句那样不在执行余下的代码并退出整个循环。 # 例如,来看一个1到10,但只打印其中奇数的循环: current_number = 0 while current_number < 10: current_number += 1 if current_number % 2 == 0: continue print(current_number) # 首先我们将current_number设为0,由于它小于10.python进入while循环。进入循环后,我们以步长1的方式上数,因此current_number += 1 # 接下来,if语句检查current_number与2的求模运算结果,如果结果为零,就执行continue语句,让python忽略余下的代码,并返回到循环的开头 # 如果当前的数字不能被2整数,就执行循环中余下的代码,然后python将这些数字打印出来 # 避免无限循环 # 每个while循环都必须有停止运行的途径,这样才不会没完没了地执行下去,例如,下面的循环从1到5: x = 1 while x <= 5: print(x) x += 1 # 如果你遗漏了代码行 x += 1 这个循环将会没完没了地运行 # 在这里x的初始值为1,但根本不会变,因此条件测试 x <= 5 始终为True,导致while循环没完没了地打印1 # 如果不小心编写出了无限循环,程序陷入了无限循环,可按ctrl+c,也可关闭显示程序的终端窗口 # 使用while循环来处理列表和字典: # 要记录大量的用户和信息需要在while循环中使用列表和字典 # for循环是一种遍历列表的有效方式,但在for循环中不应修改列表,否则将导致python难以跟踪其中的元素。 # 要在遍历列表的同时对其进行修改,可使用while循环,通过将while循环同列表和字典结合起来使用,可收集、储存并组织大量输入,供以后查看和显示 # 在列表之间移动元素 # 假设有一个列表,其中包含新注册但还未验证的网站用户;验证这些用户后,如何将他们移动到另一个已验证用户列表中呢? # 一种办法是使用while循环,在验证用户的同时将其从未验证用户列表中提取出来,再将其加入到另一个已验证用户列表中 # 首先创建一个待验证用户列表,和一个用于储存已验证用户的空列表 unconfirmed_users = ['alice', 'brian', 'candace'] confirmed_users = [] # 验证每个用户,直到没有未验证用户为止 # 将每个经过验证的列表都移到已验证用户列表中 while unconfirmed_users: current_user = unconfirmed_users.pop() print("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()) # 删除包含特定值得所有列表元素: # 在前面所述中,我们使用函数remove()来删除列表中的特定值,这之所以可行,是因为要删除的值在列表中只出现了一次 # 如果要删除列表中所有包含特定值的元素,该怎么办呢 # 假设你有一个宠物列表,其中包含多个值为‘cat’的元素,要删除所有这些元素,可不断运行一个while循环,直到列表中不再包含值‘cat’ # 看面示例 pets = ['pig', 'dog', 'cat', 'goldfish', 'rabbit', 'cat'] print(pets) while 'cat' in pets: pets.remove('cat') print(pets) # 我们首先创建了一个列表,其中包含多个值为‘cat’的元素,打印这个列表后,python进入while循环 因为它发现‘cat’在列表中至少出现了一次 # 进入这个循环后,python删除第一个‘cat’并返回到while代码行,然后发现‘cat’还包含在列表中因此,再次进入循环 # 它不断删除‘cat’,直到这个值不在包含在列表中,然后退出循环并再次打印列表 # 使用 用户输入来填充字典 # 可使用while循环提示用户输入任意数量的信息,下面来创建一个调查程序,其中的循环每次执行时都提示输入被调查者的名字和回答 # 我们将收集的数据储存在一个字典中,以便将回答同调查者关联起来 responses = {} # 设置一个标志,指出调查是否继续 polling_active = True while polling_active: # 提示输入被调查者的名字和回答 name = input("请输入你的名字:") response = input("你喜欢什么运动:") # 将答卷储存在字典中 responses[name] = response # 看看是否还有人要参加调查 repeat = input("还有人要参加调查吗?(任意键继续,退出请写否)") if repeat == "否": polling_active = False print("\n---调查结束 显示结果---") for name, response in responses.items(): print("姓名:"+name+" "+"喜欢的运动是:"+response+"。")
python第六章——用户输入和while循环(函数input()工作原理,while循环,break退出循环,循环中使用continue,使用while循环处理列表和字典)
最新推荐文章于 2022-12-09 00:56:22 发布