Python编程:if语句,while循环和用户输入
if 语句
编程时经常需要检查一系列条件,并据此决定采取什么措施。在 Python 中, if 语句让你能够检查程序的当前状态,并据此采取相应的措施。
>>>cars = ['audi', 'bmw', 'subaru', 'toyota']
>>>for car in cars:
>>> if car == 'bmw':
>>> print(car.upper()) #若车名为bmw则输出大写形式
>>> else:
>>> print(car.title()) #否则输出首字母大写形式
Audi
BMW
Subaru
Toyota
条件测试
if关键词紧跟一个bool值,种表达式被称为条件测试——若该布尔值为真(True)则执行if 后的代码块,若为假(False)则忽略if 后的代码块。
检查是否相等(不等)
检查是否相等:a==b (注意两个等号)。
>>>a=10
>>>b=10
>>>a==b
True #若返回True则a=b,若返回False则a!=b
检查是否不等:a != b若返回True则a!=b,若返回False则a=b
**在Python中检查是否相等时区分大小写。**但如果大小写无关紧要,而只想检查变量的值,可将变量的值转换为小写,再进行比较。
比较数字
如下,检查一个人是否是18岁,或者是否大于/小于18岁:
>>> age == 18
True #是18岁
>>> age > 18
True #大于18岁
>>> age < 18
True #是小于8岁
检查多个条件
逻辑与and
要检查是否两个条件都为 True ,可使用关键字 and。只有两个条件均为True ,才通过;有一个为False则不通过。
>>>age_1=10
>>>age_2=20
>>>(age_1<15)and(age_2>15)
True
为改善可读性,可将每个测试都分别放在一对括号内。
逻辑或or
关键字 or 也能够让你检查多个条件,但只要至少有一个条件满足,就能通过整个测试。仅当两个测试都没有通过时,使用 or 的表达式才为 False 。
检查特定值是否在列表中
要判断特定的值是否已包含在列表中,可使用关键字 in 。
>>> requested_toppings = ['mushrooms', 'onions', 'pineapple']
>>> 'mushrooms' in requested_toppings
True
>>> 'pepperoni' in requested_toppings
False
还有些时候,确定特定的值未包含在列表中很重要;在这种情况下,可使用关键字not in
if-else语句
在存在两种可能性的情况下可使用if-else语句。if条件满足则执行if代码块,if的条件不满足则执行else的代码块。
>>>if age >= 18:
>>> print("You're ready to vote!")
>>>else:
>>> print("You're not ready to vote!")
if-elif-else语句
经常需要检查超过两个的情形,为此可使用 Python 提供的 if-elif-else 结构。
Python 只执行 if-elif-else 结构中的一个代码块,它依次检查每个条件测试,直到遇到通过了的条件测试。测试通过后, Python 将执行紧跟在它后面的代码,并跳过余下的测试。
例如分年龄段收费:
>>>if age < 4:
>>> print("Your admission cost is $0.") #小于4岁免费
>>>elif age < 18:
>>> print("Your admission cost is $5.") #4-18岁5美元
>>>else:
>>> print("Your admission cost is $10.") #18岁以上10元
当情况多于3种可以使用多个elif语句。
省略else代码块
Python 并不要求 if-elif 结构后面必须有 else 代码块。else 是一条包罗万象的语句,只要不满足任何 if 或 elif 中的条件测试,其中的代码就会执行,这可能会引入无效甚至恶意的数据。
例如上一例可改为如下,情况更加完整清晰:
>>>elif age>18:
>>> print("Your admission cost is $10.") #18岁以上10元
测试多个条件
if-elif-else 结构功能强大,但仅适合用于只有一个条件满足的情况。然而,有时候必须检查你关心的所有条件,此时使用简单if语句,在每个条件为 True时都采取相应措施。
例如,检查顾客是否点了几种配料:
>>>if 'mushrooms' in requested_toppings:
>>> print("Adding mushrooms.")
>>>if 'pepperoni' in requested_toppings:
>>> print("Adding pepperoni.")
使用 if 语句处理列表
检查特殊元素
例如,检查顾客是否点了mushroom:
>>>for requested_topping in requested_toppings:
>>> if requested_topping == 'mushroom':
-snip-
确定列表不为空
>>>if requested_toppings: #若列表不为空则返回True
>>> for requested_topping in requested_toppings:
-snip-
使用多个列表
若顾客提出的要求超出了pizza店的库存,那么需要拒绝ta。此时可以给定一个库存表,将顾客提出的要求与之对比,若没有则拒绝ta。
>>> available_toppings = ['mushrooms', 'olives', 'green peppers']
>>>for requested_topping in requested_toppings:
>>> if requested_topping in available_toppings:
-snip-
if语句格式
在条件测试的格式设置方面, PEP 8 提供的唯一建议是,在诸如 == 、 >= 和 <= 等比较运算符两边各添加一个空格。
用户输入与while 循环
函数input()
函数 input() 让程序暂停运行,等待用户输入一些文本。获取用户输入后, Python 将其存储在一个变量中,以方便你使用。
>>>message = input("Tell me something: ") #显示‘Tell me something: ’,并将用户反馈存入message
>>>print(message)
Tell me something: Hello everyone!
Hello everyone! #显示存储在message中的"Hello everyone!"
函数 input() 接受一个参数:即要向用户显示的提示或说明,让用户知道该如何做。
使用int() 函数来获取数值输入
使用函数 input() 时, Python 将用户输入解读为字符串。有时候我们需要接收数字,这时可使用函数 int() ,函数 int() 将数字的字符串表示转换为数值表示。
>>>height = input("How tall are you, in inches? ")
>>>height = int(height)
while 循环
while 循环不断地运行,直到指定的条件不满足为止。
例如,输出数字1-5:
>>>current_number=1
>>>while current_number<6: #当满足条件current_number<6时执行循环体
>>> print(current_number)
>>> current_number+=1 #步长为1
让用户选择何时退出
使用 while 循环让程序在用户愿意时不断地运行,如下例,当用户输入‘quit’时退出循环。
>>>while message != 'quit':
>>> -snip-
根据标志判断是否结束循环
在前一个示例中,我们让程序在满足指定条件时就执行特定的任务。但在复杂的程序中,很多不同的事件都会导致程序停止运行。我们可定义一个变量,用于判断整个程序是否处于活动状态。这个变量被称为标志。
如下例所示,定义一个标志active,检查当灯坏或红灯条件为真时,active标志为False,此时不可通行:
>>>active=True
>>>if light_broken:
>>> active=False
>>>if light_red:
>>> active=False
>>>while active:
>>> print("You can drive through.")
使用break退出循环
要立即退出 while 循环,不再运行循环中余下的代码,也不管条件测试的结果如何,可使用 break 语句。
>>>while True:
>>> city = input("Please input your favorite city: ")
>>> if city == 'quit': 输入为'quit'则结束循环
>>> break
-snip-
使用continue重新开始循环
使用continue关键字可跳过循环体剩余部分回到循环开头,重新开始一个循环。如下例,打印10以内的奇数:
>>>while current_number < 10:
>>> current_number += 1
>>> if current_number % 2 == 0:
>>> continue #偶数则跳过打印环节
>>> print(current_number)