python第七章——用户输入和while循环

本章你将学习如何接受用户输入,让程序能够对其进行处,需要使用input()函数,学习使用while循环让程序不断地与运行,直到指定的条件不满足为止。并学会编写交互式程序。

一、函数input()

input()函数能让程序暂停运行,等待用户输入一些文本。获取用户输入后,python将其储存在一个变量中,以方便你使用。

1、编写清晰的程序

通过在提示末尾加一个空格,将提示和用户输入隔开,让用户可以清晰地知道在哪里输入。

当提示超过一行时,可将提示储存在一个变量中,再将变量传递给input()。符号+=是在储存的字符串末尾附加一个字符串。

name=input("Please enter your name: ")
print("Hello, "+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("\nHello, "+name+"!")

2、使用int()函数赖获取数值输入

使用input()函数获得的是字符串,即使是用户输入数字,但返回的是数值的字符串表示,不能进行一些与数字之间的操作,如和数值作比较。当我们需要数字时使用int()函数,它可将字符串转换为数字。

height=input("How tall are you,in inches? ")
height=int(height)

if height >= 36:
	print("\nYou're tall enough to ride!")
else:
	print("\nYou'll be able to ride when you're a litter older.")

将数值输入用于计算和比较前,务必将其转换为数值表示。

3、求模运算符

求模运算符%将两个数相除并返回余数。如果一个数可被另一个数整除,余数为0,求模运算符返回0,利用这一点可判断一个数是奇数还是偶数。

number=input("Enter a name,and I'll tell you if it's even or odd: ")
number=int(number)

if number % 2==0:
	print("\nThe number "+str(number)+"is even.")
else:
	print("\nThe number "+str(number)+"is odd.")

二、while循环

for循环针对的是集合中的每个元素都是一个代码块,而while循环不断地运行,直到指定的条件不满足为止。

扫描二维码关注公众号,回复: 3430652 查看本文章
current_number = 1
while current_number <= 5:
	print(current_number)
	current_number += 1

1、让用户选择何时退出

可使用while循环让程序在用户愿意时不断地运行,我们在其中定义一个退出值,只要用户输入的不是这个值,程序就接着进行。在下面的例子中,python首次执行while语句时,需要将message的值与‘quit’进行比较,但此时用户还没有输入,如果没有可比较的值,程序无法进行。此时我们给变量message制定一个初始值,虽然只是空字符串,但符合要求。

prompt="\nTell me something,and Iwill repeat it back to you:"
prompt += "\nEnter 'quit' to end the program. "
message=''
while message != 'quit':
	message=input(prompt)
	
	if message != 'quit':
		print(message)

2、使用标志

其实在更复杂的程序中,很多不同的事件都会导致程序停止。在前一个例子中,我们定义程序满足一个指定的条件时执行程序,但如果有很多个那就不好表示了。此时我们可以定义一个变量,判断整个程序是否处于活动状态,这个变量称为标志。

你可以让标志为True时继续运行,并在任何事件导致标志为False时让程序停止。就相当于交通灯。

prompt="\nTell me something,and Iwill 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)

结果和前面的例子一样。在这个例子中,我们将标志命名为active并设置为True,让程序最初处于活动状态,这样while语句不需要进行任何比较,只要变量active为True循环就继续进行,如果用户输入‘quit’,我们将变量active设置为False并导致循环不再进行。

3、使用break退出循环

要立即退出while循环,不再运行循环中余下的程序,也不管条件测试结果如何,可使用break语句。以while True开始的循环将不断运行,直到遇见break语句,可使用break语句来退出遍历列表或字典的for循环。

prompt="\nPlease enter the name of a city you have visited:"
prompt += "\nEnter 'quit' when you are finished. "

while True:
	city=input(prompt)
	
	if city == 'quit':
		break
	else:
		print("I'd love to go to "+city.title()+"!")

4、在循环中使用continue

要返回到循环开头,并根据条件测试结果决定是否继续执行循环,可使用continue语句。

例子:以列表的形式打印1-20中的奇数。

current_number=0
odds=[]
while current_number < 20:
	current_number += 1
	if current_number % 2 == 0:
		continue
	else:
		odds.append(current_number)
print(odds)

有时候在编写while循环语句时,要避免陷入无限循环,如果程序陷入无限循环,可按ctrl+c,也可关闭显示程序输出的终端窗口。

三、使用while循环来处理列表和字典

在前面的循环中我们只处理一项用户的信息:获取用户的输入,再将输入打印出来,循环再次运行,在得到下一个输入值并作出响应。要记录大量用户和信息需要在while循环中使用列表和字典。

while循环和for循环的不同:

for循环是一种遍历列表的有效方式,但在for循环中不应修改列表,否则将导致python难以跟踪其中元素。要在遍历列表的同时修改,可使用while循环。

1、在列表之间移动元素

# _*_ coding:gb2312 _*_
#首先创建一个待验证用户的列表
# 和一个用于储存已验证用户的空列表
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())

2、删除 包含特定值的所有列表元素

在第三章中,我们使用函数remove()来删除列表中的特定值,这只在列表中特定值出现一次情况下。在特定只出现多次情况下我们使用while循环。

例子:有一个宠物列表,有多个‘cat’元素,将所有的这些元素删除。

pets=['dog','cat','dog','goldfish','cat','rabbit','cat']
print(pets)

while 'cat' in pets:
	pets.remove('cat')
print(pets)

3、使用用户输入来填充字典

这个程序中首先定义一个空字典,并设置一个标志,在循环中,提示用户输入名字和喜欢爬那座山,并将这些信息储存在字典responses中,然后询问用户是否继续,回答yes继续进行while循环,回答no,将标志设为false,while循环结束,最后显示调查结果。

# _*_ coding:gb2312 _*_
responses={}

#设置一个标志,指出调查是否继续
polling_active=True

while polling_active:
	#提示输入被调查的名字和回答
	name=input("\nWhat is your name? ")
	response=input("Which mountain would you like to climb someday? ")
	
	#将答卷储存在字典中
	responses[name]=response
	
	#看看是否还有人要参与调查
	repeat=input("Would you like to let another person respond?(yes/no) ")
	if repeat=='no':
		polling_active=False

#调查结束,显示结果
print("\n...poll results...")
for name,response in responses.items():
	print(name+"would like to climb "+response+".")



猜你喜欢

转载自blog.csdn.net/IMWTJ123/article/details/80115672