热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

《Python编程从入门到实践》学习笔记<7>:用户输入和while循环

一、用户输入函数input()的功能,就是让程序在运行过程中,能够接收到用户的输入进行输出,如下例所示:prompt请按照提示输入您的姓名,我们将根据您的姓名显示信息!\npr

《Python编程-从入门到实践-(第2版)》读书笔记

一、用户输入

  函数input()的功能,就是让程序在运行过程中,能够接收到用户的输入进行输出,如下例所示:


prompt = "请按照提示输入您的姓名,我们将根据您的姓名显示信息!\n"
prompt
+= "请输入您的名字:\n"
name
= input(prompt)
print("你好, " + name + "")
#输出结果如下:
请按照提示输入您的姓名,我们将根据您的姓名显示信息!
请输入您的名字:
李雷
你好, 李雷!

  在上例中,我们将中文提示信息字样的字符串,赋值给变量prompt,其中“+=“的作用是在已赋值的prompt 后面再新增一串字符串,共同组成新的变量prompt,接着在下段代码中,调用input()函数让用户根据提示信息输入,并用新的变量name来实现这个需求,然后通过print来输出,程序运行以后,首先输出提示信息,然后在输出框内键入名字,以李雷为例(绿色为键入字符),接着敲下回车,系统输出字符串“你好, 李雷!”

  对于编程语言中的输入函数,有一个很经典的求奇偶问题,即输入一个随机数,判断它是奇数还是偶数,如下例所示:

 


number = input("输入一个随机整数,判断它是奇数还是偶数:\n ")
number
= int(number)
if number % 2 == 0:
print("\n随机整数 " + str(number) + " 是个偶数.")
else:
print("\n随机整数 " + str(number) + " 是个奇数.")

#输出结果如下:
输入一个随机整数,判断它是奇数还是偶数:
5
随机整数
5 是个奇数.

 

  上例中的逻辑其实很简单,先定义一个变量number封调用函数input的提示信息,由于输入的数据时数值,而默认的输入数据类型是字符串,因此需要在下面将输入内容的数据类型转换成int型,然后进入if判断,将输入的数据进行取模运算,即“number % 2”。取模运算是用来求取余数的,即数据除以“%”后面的数据,余数是多少就返回多少,如上例中输入数据与2取模,如果等于0则是偶数,反之则是奇数。执行程序,经过提示信息后,输入数值5,经过取模运算后发现余数为1,不满足if条件,执行else部分代码,输出“随机整数 5 是个奇数.”的结果。

 

  上述例题只是input()函数的基本运用,反复练习后,解决课后习题难度不大,习题答案如下:

 


#7-1
car = input("请输入你想租什么车?\n")
print("这辆" + car + "就是你想要的车!")
#输出结果如下:
请输入你想租什么车?
bmw
这辆bmw就是你想要的车!
#7-2
hotel = input("请问有多少人就餐?\n")
hotel
= int(hotel)
if hotel <= 8:
print("有空桌")
else:
print("没空桌")
#输出结果如下:
请问有多少人就餐?
9
没空桌
# 7-3
number = input("请输入你想测的数?\n")
number
= int(number)
if number % 10 == 0:
print("是10的整数倍")
else:
print("不是10的整数倍")
#输出结果如下:
请输入你想测的数?
80
是10的整数倍

 

二、while循环

  while循环也是一种常用的循环方式,执行while循环后,程序会无限循环,直到条件不满足为止,如下例所示:


number = 0
while number <=5 :
print(number)
number
+= 1
#输出结果如下所示:
0
1
2
3
4
5

  如上例所示,创建变量numbe并赋值为0,执行while循环,当number小于等于5的时候,输出number,并自增1,依次循环到number大于5以后,程序中断跳出。

  中断循环除了程序自己运行以外,还可以通过自动触发条件来进行,如下所示:


prompt = "随便输入点什么:\n "
message
= ""
while message != 'quit':
message
= input(prompt)
if message != 'quit':
print(message)
#输出结果如下所示:
随便输入点什么:
hello everyone
hello everyone
随便输入点什么:
quit
进程完成,退出码 0

  上例这种创建变量prompt赋值提示信息字符串,同时定义变量message 赋值空字符串,原因在于执行while循环时需要将变量message 'quit'进行对比,因此要先定义变量message并随意赋值字符串,为方便起见赋值空字符串,随后进入while循环,当变量message的值不等于quit时,循环无限执行,直到键入quit后,循环条件不满足,程序中断。其中if循环的作用在于,当输入不是quit时,会输出键入的字符串,当输出为quit时,会跳出判断,不显示quit

  对于简单的需求,设置中断条件很方便,但是对于复杂的需求,尤其是中断条件多的时候,通过使用标志来让程序种子循环则是很方便的选择,如下所示:

 


prompt = "随便输入点什么:\n "
active
= True
while active:
message
= input(prompt)
if message == 'quit':
active
= False
else:
print(message)
#输出结果如下:
随便输入点什么:
lalala
lalala
随便输入点什么:
quit
进程完成,退出码 0

 

  上例中创建变量prompt保存提示信息,同时创建变量active 保存True,即active 代表条件为真,执行while循环,根据提示输入字符。当输入字符为quit时,将active 重新赋值为False,再次循环时,系统读取active的值为False,默认判断条件为假,程序中断。

  此外,有时候也可以用break的方法让程序中断,如下例所示:


prompt = "随便输入点什么:\n"
while True:
message
= input(prompt)
if message == 'quit':
break
else:
print( message )
#输出结果如下:
随便输入点什么:
lalaal
lalaal
随便输入点什么:
quit
进程完成,退出码 0

  同样是定义变量prompt用来存放提示信息,当条件为真的时候循环开始,当输入内容为quit时执行break终止程序循环结束。

  除了跳出循环,python还提供了continue用来跳过输出进入下一次循环,如下例所示:


number = 0
while number <5:
number
+= 1
if number > 1 and number <4 :
continue
print( number )
#输出结果如下所示:
1
4
5

  由上例可看出,当变量number的值在1到4之间的时候,程序没有继续执行打印输出的部分,而是直接返回循环开始的地方重新循环,这就是continue跳过的作用。

  关于while的基础用法如上所示,相关习题如下:


#7-4
#
比萨配料:编写一个循环,提示用户输入一系列的比萨配料,并在用户输入
#
'quit'时结束循环。每当用户输入一种配料后,都打印一条消息,说我们会在比萨中添
#
加这种配料。
mi = "请输入配料:\n"
pizz
= ""
while pizz != 'quit':
pizz
= input(mi)
if pizz != 'quit':
print("我们会加入" + pizz)
#输出结果如下所示:
请输入配料:
培根
我们会加入培根
请输入配料:
quit
进程完成,退出码 0

#7-5
#
有家电影院根据观众的年龄收取不同的票价:不到 3 岁的观众免费;
#
3~12 岁的观众为 10 美元;超过 12 岁的观众为 15 美元。请编写一个循环,在其中询问
#
用户的年龄,并指出其票价。
while True:
age
= input( "请输入你的年龄:")
age
= int(age)
if age <= 3 :
print("免费")
elif age <= 12 :
print("$10")
else :
print("$15")
#输出结果如下所示:
请输入你的年龄:1
免费
请输入你的年龄:
5
$
10
请输入你的年龄:
19
$
15
请输入你的年龄:

#7-6-1
#
以另一种方式完成练习 7-4 或练习 7-5,在程序中采取如下所有做法。
#
在 while 循环中使用条件测试来结束循环。
#
使用变量 active 来控制循环结束的时机。
#
使用 break 语句在用户输入'quit'时退出循环。
while True:
age
= input( "请输入你的年龄:")
if age == 'quit' :
break
elif int(age) <= 3 :
print("免费")
elif int(age) <= 12 :
print("$10")
else :
print("$15")
#输出结果如下所示:
请输入你的年龄:12
$
10
请输入你的年龄:
1
免费
请输入你的年龄:
16
$
15
请输入你的年龄:quit
进程完成,退出码 0



#7-6-1-2 让输出结果存入列表中,最后打印列表中的元素
pizz = []
ingredient
= "请输入披萨配料:"
pizz_ingredient
= ""
while pizz_ingredient != '不要了':
pizz_ingredient
= input(ingredient)
if pizz_ingredient != '不要了':
pizz.append(pizz_ingredient)
print("您一共添加了:" )
for p in pizz:
print(p,end=" ") #end=" "可让输出横向,双引号中可输入需要的分隔符,此处用空格分隔

#输出结果如下所示:
请输入披萨配料:培根
请输入披萨配料:香肠
请输入披萨配料:鸡蛋
请输入披萨配料:火腿
请输入披萨配料:生菜
请输入披萨配料:不要了
您一共添加了:
培根 香肠 鸡蛋 火腿 生菜
进程完成,退出码 0
#7-6-2
active = True
while active:
age
= input("请输入您的年龄:")
age
= age
if age == 'quit':
active
== False
elif (int(age) <= 3) and (int(age) > 0):
print("\t根据规定您可以免费观影!")
elif int(age) <= 12 and (int(age) > 3):
print("\t根据规定您需要购买10美元的电影票!")
elif int(age) > 12:
print("\t根据规定您需要购买15美元的电影票!")
print("祝您观影愉快!")

#输出结果如下所示:
请输入您的年龄:1
根据规定您可以免费观影!
祝您观影愉快!
请输入您的年龄:
6
根据规定您需要购买10美元的电影票!
祝您观影愉快!
请输入您的年龄:
16
根据规定您需要购买15美元的电影票!
祝您观影愉快!
请输入您的年龄:quit
祝您观影愉快!
请输入您的年龄:




7-6-3
while True:
age
= input("请输入您的年龄:")
if age == 'quit':
break
elif int(age) <= 3:
print("\t根据规定您可以免费观影!")
elif int(age) <= 12:
print("\t根据规定您需要购买10美元的电影票!")
else:
print("\t根据规定您需要购买15美元的电影票!")

#输出结果如下所示:
请输入您的年龄:1
根据规定您可以免费观影!
请输入您的年龄:
4
根据规定您需要购买10美元的电影票!
请输入您的年龄:
22
根据规定您需要购买15美元的电影票!
请输入您的年龄:

  对于while的高级应用,常见的是用来处理列表或字典中的值,书中分三个例子介绍,课后习题难度与例题相似,答案如下所示:


#7-8
#
创建一个名为 sandwich_orders 的列表,在其中包含各种三明治的名字;再创建一个名为 finished_sandwiches 的空列表。
#
遍历列表 sandwich_orders,对于其中的每种三明治,都打印一条消息,如 I made your tuna sandwich,并将其移到列表finished_sandwiches。
#
所有三明治都制作好后,打印一条消息,将这些三明治列出来。
sandwich_orders = ['鸡蛋三明治','培根三明治','金枪鱼三明治']
finished_sandwiches
= []
while sandwich_orders:
sandwich_order
= sandwich_orders.pop()
print("您的" + sandwich_order + "正在制作中,请稍等。")
finished_sandwiches.append(sandwich_order)
print("\n已经制作完成的三明治有:")
for sandwich in finished_sandwiches:
print("\t" + sandwich)
#输出结果如下所示:
您的金枪鱼三明治正在制作中,请稍等。
您的培根三明治正在制作中,请稍等。
您的鸡蛋三明治正在制作中,请稍等。
已经制作完成的三明治有:
金枪鱼三明治
培根三明治
鸡蛋三明治
进程完成,退出码 0

#7-9
#
使用为完成练习 7-8 而创建的列表sandwich_orders,并确保'pastrami'在其中至少出现了三次。
#
在程序开头附近添加这样的代码:打印一条消息,指出熟食店的五香烟熏牛肉卖完了;
#
再使用一个 while 循环将列表 sandwich_orders 中的'pastrami'都删除。确认最终的列表 finished_sandwiches 中不包含'pastrami'。

sandwich_orders
= ['鸡蛋三明治', '烟熏牛肉', '培根三明治', '烟熏牛肉', '金枪鱼三明治', '烟熏牛肉']
print(sandwich_orders)
while '烟熏牛肉' in sandwich_orders:
sandwich_orders.remove(
'烟熏牛肉')
print(sandwich_orders)
#输出结果如下所示:
['鸡蛋三明治', '烟熏牛肉', '培根三明治', '烟熏牛肉', '金枪鱼三明治', '烟熏牛肉']
[
'鸡蛋三明治', '培根三明治', '金枪鱼三明治']
进程完成,退出码 0

#7-10
#
编写一个程序,调查用户梦想的度假胜地。使用类似于“If
#
you could visit one place in the world, where would you go?”的提示,并编写一个打印调
#
查结果的代码块。
respOnes= {}
active
= True
while active:
name
= input("请输入你的名字:\n")
city
= input("请输入你想去的城市:\n")
respones[name]
= city
repart
= input("你想问问别人么?(yes / no)\n")
if repart == 'no':
active
= False
print("\n以下是大家的答案")
for name,city in respones.items():
print(name.title() + "想去" + city.title() + "!")
7-10-2
respones
= {}
while True:
name
= input("请输入你的名字:\n")
city
= input("请输入你想去的城市:\n")
respones[name]
= city
repart
= input("你想问问别人么?(yes / no)\n")
if repart == 'no':
break
print("\n以下是大家的答案")
for name,city in respones.items():
print(name.title() + "想去" + city.title() + "!")
#输出结果如下所示:
请输入你的名字:
李雷
请输入你想去的城市:
东京
你想问问别人么?(yes
/ no)
yes
请输入你的名字:
韩梅梅
请输入你想去的城市:
伦敦
你想问问别人么?(yes
/ no)
no
以下是大家的答案
李雷想去东京!
韩梅梅想去伦敦!
请输入你的名字:

 

  

 



推荐阅读
author-avatar
jia19891213
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有