第7章 用户输入和while循环
第7章 用户输入和while循环
7.1 函数input()的工作原理
message = input("Tell me something, and I will repeat it back to you: ")
print(message)
函数input()的参数是:令用户输入字符串时的提示语
7.1.1 编写清晰的程序
name = input("Please enter your name:")
print(f"\nHello,{name}!")
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(f"\nHello,{name}")
这里要注意+=,在python中,变量a += 变量a 等同于: 变量a = 变量a + 变量a
7.1.2 使用int()来获取数值输入
age = input("How old are you?")
a = int(age) > 18
print(a)
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.")
这里可以将int()和str()等同理解,起到类型转换的作用
7.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"The number {number} is even.")
else:
print(f"The number {number} is odd.")
这里举了一个例子:
首先我们输入一个值,然后把输入的值通过int()进行类型转换,
然后通过ifelse语句进行判断,条件是int()之后的值对2取余数,
然后便可以打印出奇数、偶数
7.2 while循环简介
一直循环,直到不满足条件为止
7.2.1 使用while循环
current_number = 1
while current_number <= 5:
print(current_number)
current_number += 1
这里举了一个简单的例子:
设变量值为1,运行while语句
首先要进行条件判断,如果符合条件,则运行循环语句
循环末尾变量的值加1,继续遍历循环判断条件。
7.2.2 让用户选择何时退出-设定退出的值
prompt = "\nTell me something, and I will repeat it back to you:"
prompt += "\nEnter 'quit to end the program."
message = ''
while message != 'quit':
message = input(prompt)
if message != 'quit':
print(message)
其实就是在循环时,让用户输入某一个值,
然后判断while循环的条件和用户输入的值是否相等,
一般情况下,我们这样设置:用户输入的值不等于循环判断值时,我们进行循环
7.2.3 使用标志
prompt = "\nTell me something, and I will 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)
使用标志:其实就是换了一种花样结束循环,
我们一开始定义一个变量,赋予其布尔值:True
然后将这个标志设置为while循环的判断语句并进行循环
这个过程中还是需要用户不停的进行输入,因为不输入,标志的值便无法改变
我们通过if语句来对标志的值进行改变。
7.2.4 使用break退出循环
prompt = "\nTell me something, and I will repeat it back to you:"
prompt += "\nEnter 'quit to end the program."
while True:
message = input(prompt)
if message == 'quit':
break
else:
print(message)
这里我们将while循环判断的值直接设置为True
同样,while循环在每次循环前都要判断条件是否满足
很显然,循环设置为True后,当用户没有打断循环时,会进入死循环
同样,我们在这里设置if-else语句,如果满足了循环结束的条件,我们直接通过break结束循环
7.2.5 在循环中使用continue
current_number = 0
while current_number < 10:
current_number += 1
if current_number % 2 == 0:
continue
print(current_number)
break语句是直接结束循环
continue是返回到循环开头去进行判断-循环,并不结束循环
同样,我们设置if条件判断语句,当条件满足时,我们通过continue返回循环开头
7.2.6 避免无限循环
x = 1
while x <= 5:
print(x)
x += 1
在上述例子中,如果我们在循环体末尾不添加变量自加的语句,那么程序会进入死循环
7.3 使用while循环处理字典和列表
7.3.1 在列表之间移动元素
unconfirmed_users = ['alice', 'brian', '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())
这里我们首先定义两个列表,一个存入值,另一个为空列表
然后通过while循环遍历第一个列表,将列表中的值存入一个变量
这里我们采用方法pop()将第一个列表中的值弹出
再将变量的值存入空列表,然后循环继续进行遍历-取出-存储操作
最后通过for循环遍历打印最开始的空列表,输出添加后的值
7.3.2 用while循环移除列表中的特定值
pets = ['dog', 'cat', 'cat']
print(pets)
while 'cat' in pets:
pets.remove('cat')
print(pets)
到这里,我真的发现python这个编程语言的优雅之处,
它的代码风格很符合我们人类的语言
例如这里:判断值‘cat’是否再列表pets中,
我们直接通过 “while ‘cat' in pets:”这条语句来进行循环,真的很优雅!
7.3.3 使用用户输入来填充字典
qs = {}
polling_active = True
while polling_active:
name = input("\nWhat is your name?")
mountain_name = input("Which mountain would you like to climb someday?")
qs[name] = mountain_name
repeat = input("Would you like to let another person respond?(yes/no)")
if repeat == 'no':
polling_active = False
print("\n--- Poll Results ---")
for name, mountain_name in qs.items():
print(f"{name} would like to climb {mountain_name}.")
这里我们先定义一个空字典,然后赋予一个标志,然后进行while循环
在循环中:我们通过函数input()输入字典所需要的键值对
然后将键值对存入字典中,这里如果忘记了字典中键值对的存储,可以回顾上一篇文章。
将键值对存入字典之后,我们再引导用户输入一个值,再用if语句进行判断,
如果满足条件,我们修改while循环的标志,令其值为False
这样便结束了while循环
最后我们通过for循环,输出字典,上面这个例子是输出了我们想要看到的结果
目前已经学完了7个章节,用到最多的就是:列表、元组、字典、if语句、if-else语句、if-elif-else语句还有我们在打印输出时的f字符串,f字符串真的很方便,f字符串使得我们不用再在print函数中写入很多双引号和加号,看上去很“优雅”。