7.while 循环
实现交互功能
input() 函数 获取用户输入的信息
while循环 使程序不断运行
7.1 input() 函数
- 函数input()工作原理:让程序暂停运行,等待用户输入文本,将用户输入的文本(字符串)存储在变量中;接受参数:函数括号内可以输入提示信息向用户提示要输入什么内容。
p = '\n输入信息,我将会重复:'
p += '\n输入"quit"来结束程序'
message = ''
while message != 'quit':
message =input(p)
print(message)
代码中变量p为提示信息,message=input(p)
即显示提示信息p的内容,将用户输入的信息存储在变量 message中。
创建多行字符串
p = '文本‘
p += ' 第二行文本'
- 函数 int()
函数int()将用户输入的字符串转化为数值以进行运算和比较。
例如a = input()
a = int(a)
%求余运算符 : 两个数相除并返回余数
%求余运算符可用于判断奇偶, %2 == 0 即为偶数
7.2 while循环
- 使用标志
标志是用于判断整个程序是否处于活动状态的一个变量;标志为True时程序运行,为False时程序停止运行。
p = '\n输入信息,我将会重复:'
p += '\n输入"quit"来结束程序'
active = True
while active:
message =input(p)
if message == 'quit':
active = False
else:
print(message)
- 使用break立即退出循环
使用break 可以立即退出循环,不再运行余下的代码,也不管条件测试的结果如何。
任何循环都可以使用 break 语句,例如可以使用break 语句来退出遍历列表或字典的for循环。
p = '\n输入信息,我将会重复:'
p += '\n输入"quit"来结束程序'
while True:
message =input(p)
if message == 'quit':
break
else:
print(message)
代码中while True:
的循环不断运行,直到 遇到 break 语句。
- 使用continue回到循环开头的条件测试
要返回到循环开头,并根据条件测试结果决定是否继续执行循环,可使用continue语句,它不像break语句那样不再执行余下的代码并退出整个循环。
number = 0
while number < 10:
number+=1
if number % 2 == 0:
continue
print(number)
代码中 continue 语句执行,忽略余下代码并返回到循环开头。
练习
txt = "输入配料"
txt += '输入quit停止程序'
top = ''
while True:
top = input(txt)
if top == 'quit':
break
else:
print('\n'+top)
txt = "输入年龄"
txt += '输入quit停止程序'
top = ''
while True:
top = input(txt)
if top == 'quit':
break
else:
top = int(top)
if top < 3:
print('\n免费')
elif top <= 12:
print('\n票价为10')
elif top >12:
print('\n票价为15')
使用标志控制循环
txt = "输入年龄"
txt += '输入quit停止程序'
active = True
while active:
top = input(txt)
if top == 'quit':
active = False
else:
top = int(top)
if top < 3:
print('\n免费')
elif top <= 12:
print('\n票价为10')
elif top >12:
print('\n票价为15')
7.3 使用while循环处理列表和字典
使用for循环遍历列表时,列表不可更改;
使用while循环时,可以在遍历列表的同时对其进行修改
unconfirmed_users = ['alice','brian','candace']
confirmed_users = []
while unconfirmed_users:
current_user = unconfirmed_users.pop()
print("验证用户"+current_user)
confirmed_users.append(current_user)
print('\n以下是已经验证过的用户')
for confirmed_user in confirmed_users:
print(confirmed_user.title())
删除包含特定值的所有列表元素
remove()
pets = ['dog','cat','fish','cat']
while 'cat' in pets:
pets.remove('cat')
print(pets)
使用用户输入来填充字典
responses = {}
active = True
while active:
name = input('\n输入你的名字:')
response = input('你喜欢的山')
responses[name] = response
repeat = input('还有人要参与调查吗')
if repeat == 'no':
active = False
for name,response in responses.items():
print(name+' like '+response)