python学习—陆—用户输入和 while 循环

目录

零、用户输入

input() 的工作原理

获取数值输入

简单案例——餐厅定位

壹、while 循环

while 循环的使用

无限循环

贰、while 循环处理列表和字典

在列表间移动元素

删除列表中为特定值的元素

使用用户输入来填充字典

叁、小结


零、用户输入

在说 if 语句那部分时,最后有一个判断闰年的案例用到了用户输入,但只是简单提了一下,今天详细讲讲这部分的内容。

input() 的工作原理

函数 input() 会让程序暂停运行,并等待用户输入一些文本。获取用户输入后,python 将其赋值给一个变量,以便后续使用。

name = input("please input your name:")
print(f"Hello {name},have a good time")

结果:Sublime Text 不能运行提示用户输入的程序。你仍可以用它来写代码,但是必须得从终端运行。

input() 会接受一个参数用来向用户提示该输入什么东西,程序运行到第一行时,屏幕会打印 please input your name: ,然后等待用户输入,用户输入后按下回车,程序将用户输入的内容赋值给变量 name ,然后在执行第二行代码。

获取数值输入

现在仔细想一下,我们上例中获得的 name 格式是什么呢?这个问题挺简单的,应该都能想到是字符串

>>> name = input("please input your name:")
please input your name:vegetable
>>> type(name)
<class 'str'>

程序先等待用户输入,然后把输入值 vegetable 赋值给 name,此时 name 的类型是 str ,也就是字符串,但是如果我们输入的是一个数字,它会是什么类型呢?

>>> age = input("please input your age:")
please input your age:18
>>> type(age)
<class 'str'>

我们可以看到,计算机好像也并没有那么聪明,它把我们输入的年龄 18 作为字符串处理了。

所以我们想要获取用户输入的数值时,必须要进行强制类型转换。

你可以这样写
age = input("please input your age:")
age = int(age)

当然,你也可以这样写
age = int(input("please input your age:"))

你用 int() 得到的类型就是 int,如果你用 float() ,那么得到的就是 float()

>>> age = int(input("please input your age:"))
please input your age:18
>>> type(age)
<class 'int'>

简单案例——餐厅定位

询问用户有多少人,如果超过 8 位(包含 8 位),就告知没有空桌;否则告知有空桌

num = input("Please tell us how many of you are coming: ")
num = int(num)
if num >= 8:
	print("Sorry, we have no free tables")
else:
	print("We have some free tables,you can book now")

结果:

壹、while 循环

之前我们说过 for 循环,而今天要讲讲 while 循环。

while 循环的使用

num = 0
while num < 5:
	num += 1
	print(num)

结果:这个程序打印了 1,2,3,4,5

接下来,我们看看这个程序为什么打印了 1,2,3,4,5

首先,给变量 num 赋值为 0,然后进入 while 循环,意思为在 num < 5 时,一直执行循环体中的内容。

进入循环体,首先让 num 自增 1,num += 1 就是 num = num + 1,自增后,打印 num ······

直到条件不满足时,跳出循环

无限循环

很好理解,就是 while 后的条件永远为真,永远能执行下去。

x = 1
while x < 5:
	print(x)
	x += 1

比如上述的代码如果不小心遗漏了 x += 1 就会进入一个无限循环,因为条件永远为真,只能使用 Ctrl + C 退出。

贰、while 循环处理列表和字典

for 循环遍历列表十分方便,但不应该在 for 循环中修改列表,否则将导致 python 很难追踪其中的元素。

在遍历列表的同时对其进行修改,可以使用 while 循环。while 循环与列表和字典结合使用,可以收集、存储并组织大量输入。

在列表间移动元素

我们有两个列表,一个是未验证过的学生,验证完这些学生,需要将他们移动到另一个已验证学生表中

unconfirmed_stus = ['amy','tony','bruce']
confirmed_stus = ['lisa','vegetable']

while unconfirmed_stus:
	ing_stu = unconfirmed_stus.pop()
	confirmed_stus.append(ing_stu)

for confirmed_stu in confirmed_stus:
	print(confirmed_stu)

结果:

回头看代码,有两个列表,一个是未确认学生列表,一个是已确认学生列表

while 循环中会不断运行,知道 unconfirmed_stus 表中没有元素,pop() 是从列表末尾删除一个元素,也就是将未确认学生从未确认列表中删除,并且赋值给 ing_stu,然后在使用 append() 在列表末尾增加一个元素,也就是将 ing_stu 添加到已确认学生列表末尾。最后在使用 for 循环遍历已确认学生列表。

删除列表中为特定值的元素

之前提过,remove() 只能删除列表中第一次出现的特定元素,今天讲讲怎么一次性删除所有特定元素

fruit = ['apple','apple','peach','pear','apple']
print(fruit)
while 'apple' in fruit:
	fruit.remove('apple')
print(fruit)

结果:

使用 while 循环遍历 fruit 列表,并且用 remove() 按值删除特定元素 ‘apple’

使用用户输入来填充字典

我们试着做一个问卷调查,并将结果保存到一个空字典中

results = {}

while 1:
	name = input("\nWhat's your name? ")
	response = input("\nWhat do you want to eat? ")

	results[name] = response

	repeat = input("\nWould you like to let another person respond?(yes or no) ")
	if repeat == 'no':
		break
	else:
		continue

for name,food in results.items():
	print(f"{name} wants to eat {food}")

 结果:第一行,我们定义了一个空字典 result,然后写了一个死循环,name 和 response 都是用户输入的内容,并且在下一行 result[name] = response 中,我们让 name 作为字典的键,response 作为字典的值,从而构成一对键值对,之后让用户输入 yes 或 no 赋值给 repeat ,并在最后用 if 语句控制,repeat 的值是 no 时,我们直接退出循环,是 yes 时,我们就继续,最后使用 for 循环遍历字典,并打印

叁、小结

今天的任务终于完成了,每天完成一部分,那很长时间后就会还有很大的收获,就好像拼积木一样,一块一块的搭起来,到最后就有了很雄伟又很完美的作品,说到积木,就想到我的名字,jim_vegetable,jim 和积木同音,希望自己能够像拼积木一样学习想学的知识,一点一点的积累,直到最后呈现出作品;vegetable 自然不用说了,因为自己菜,就是因为菜所以才要学习,越学习越觉得自己知道的太少了,越觉得自己菜。哈哈哈,就这样一直菜下去吧。加油!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值