本文目录
第7章 用户输入和while循环
交互式的程序需要获取用户输入(input)并控制程序运行的时间,这需要input()
函数。而while
循环则可以是程序不断地运行,直到条件不再满足为止.
- 后面章节的内容和代码长度都在增加,从本章起将分开记录在不同笔记中,以免笔记过长而影响阅读.
- 另,为避免过程中频繁切换中英文标点符号造成各种书写错误,以后的笔记统一用半角英文标点符号.
7.1 input()函数的工作原理
变量名 = input("函数参数,即提示内容字符串")
input()函数让程序暂停运行,等待用户输入,获取输入后,Python将其赋值给变量.如下代码将一段用户输入的文本打印到屏幕.
message = input("请输入一些内容并回车,我将把它们呈现给你:")
print(message)
上面的代码中input()函数带有一个参数,即其括号中的字符串,它可以用作给用户一些提示(prompt),让用户知道需要输入哪方面的内容等.运行后,程序会停止在屏幕上,等待用户输入,输入后回车,print()函数则会将用户刚刚输入的内容再打印到屏幕上.
7.1.1 编写清晰的提示
使用input()函数时,应该给用户以清晰的提示,让用户知道该输入什么,从用户处减少输入错误.当需要的提示很长时,可以分行书写,如下:
tishi = "在正式使用前,你应该仔细阅读本程序的使用指南以及隐私声明."
tishi += "\n当你完成注册并正式开始使用,则视为你已经接受本程序的隐私声明."
tishi += "\n首先,请输入你希望使用的用户名: "
username = input(tishi)
print(username)
上例中的运算符
+=
用于创建多行字符串,它将给变量tishi
在其末尾上再追加一个字符串,可以多次追加.字符串格式的控制方式,像普通字符串一样.
7.1.2 使用int()函数获取数值输入
input()
函数默认输入的是字符串,但有时候需要的是数值而不是字符串,这里用int()
函数进行处理.
下面代码虽然能获取用户年龄,但Python会报错,因为无论用户输入什么数字,赋值给变量的都是默认的字符串,是被引号' '
包围起来的,所以无法进行数学计算.
age = input("你今年多大了: (请输入整数)")
if age >= 12:
print("你已满12岁,符合本程序使用条件,让我们继续吧.")
else:
print("你未满12岁,请由家长注册账号,并在其监督陪伴下使用.")
如下代码,用int()
函数正确处理用书输入的值后,可以正常运行.
age = input("你今年多大了: (请输入纯数字)")
#int()函数会将其获取的参数值转换为数值
age =int(age)
if age >= 12:
print("你已满12岁,符合本程序使用条件,让我们继续吧.")
else:
print("你未满12岁,请由家长注册账号,并在其监督陪伴下使用.")
牢记input()函数获取的默认为字符串,要对输入值进行计算或比较前,务必转换为数值.
7.1.3 求模运算符 %
处理数值时会遇到求模运算,求模运算符%
只返回两数相除的余数,如果整除,则返回0
.看到这里,我有点疑惑,Python的%
究竟是求模还是求余[1]?实测一下.
jieguo = -7 % 4
print(jieguo)
实际输出的结果为1
,按照求模和求余的不同取商方法,可见Python的%
的确是求模的,而不是求余,可能我的疑惑原本就是多余的…
最常见的求模运算就是判断奇偶数吧?如果一个数能被2整除就是偶数,否则为奇数.
number=input("请你输入一个任意整数,我来判断其是否为偶数: ")
number=int(number)
if number % 2 == 0 :
print(f"{number} 为偶数.")
else:
print(f"{number} 是一个奇数.")
本节习题
习题 7.1 获取输入并打印到屏幕
shuiguo = input("请输入你最喜欢的水果: ")
print(f"哦,原来你最还吃{shuiguo}.")
习题 7.2 判断输入数值并反馈信息
renshu = input("请输入预定餐桌的就餐人数: ")
renshu = int(renshu)
if renshu > 10 :
print(f"抱歉,本餐厅没有超过10人的大桌.")
else:
print(f"好的,请继续输入预约用餐的时期.")
习题 7.3 10的整倍数
让用户输入一个数,并返回其是否为10的整倍数.
number = input("本品每包10个,整包出售,请输入需要的数量: ")
number = int(number)
if number % 10 == 0 :
print(f"好的,您需要购买{number/10}包,请继续下单.")
else:
print(f"抱歉,不足整包部分无法出售,请修改购买数量.")
- 求模运算和求余运算的主要差别在于第一步的两数相除商的取向.求模时,商向负无穷方向舍入取整;而求余时,商向0方向舍入取整.测试例子中的-9/5,其求模时结果为-1.8≈-2;而在求余时,其结果为-1.8≈-1 ↩︎