python第六章——用户输入和while循环(函数input()工作原理,while循环,break退出循环,循环中使用continue,使用while循环处理列表和字典)

# 用户输入和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循环处理列表和字典))