(17)python控制语句

2. 控制语句

2.1 if 语句

 if 语句的核心值为True 或False 的布尔表达式,这种表达式被称为条件测试 。如果条件测试的值为True ,就执行紧跟在if 语句后面的代码;如果为False ,Python就忽略这些代码。

 添加测试种类包括

 检查两个字符串相等和不等。

 检查两个数字相等、不等、大于、小于、大于等于和小于等于。

 使用关键字and 和or 的测试。

 测试特定的值是否包含在列表中。

 测试特定的值是否未包含在列表中。

 if语句三种形式

 if结构

 if else结构

 if-elif-else 结构

示例:

values = 'Python'

if len(values) =='6':

    print('Right')  #需要缩进

elif values == 'python' or values in ('PYTHON','Python'):

    print("Error") #需要缩进

else:

    print("unknown")

if语句判断列表是否为空,格式:if 列表名,示例

requested_toppings = []

if requested_toppings:  #列表为空,所以布尔值为False,执行后面的else语句

  for requested_topping in requested_toppings:

      print("Adding " + requested_topping + ".")

  print("\nFinished making your pizza!")

else:

    print("Are you sure you want a plain pizza?")


2.2 while 循环

2.2.1 while 循环简介

while循环不断地运行,直到指定的条件不满足为止,即布尔值为False。for循环用于针对集合中的每个元素循环运行。while循环示例:

current_number = 1

while current_number <= 5:  #小于等于5时为True,否则为False不满足循环条件,退出循环

    print(current_number)

    current_number += 1 #代码current_number = current_number + 1的简写


2.2.2 让用户选择何时退出

实例:定义了一个退出值,只要用户输入的不是这个值,程序就接着运行并打印用户输入的内容。

prompt = "\nTell me something, and I will repeat it back to you:"

prompt += "\nEnter 'quit' to end the program. "

message = ""

while message != 'quit':

    message = input(prompt)

    print(message)

实例详解:

 定义了一条提示消息,告诉用户有两个选择:要么输入一条消息,要么输入退出值(这里为'quit' );

 接下来创建了一个变量message,用于存储用户输入的值。我们将变量message 的初始值设置为空字符串"" ,让首次执行while 代码行时有可供检查的东西。首次执行while 语句时,需要将message 的值与'quit' 进行比较,但此时用户还没有输入。如果没有可供比较的东西,Python将无法继续运行程序。为解决这个问题,我们必须给变量message 指定一个初始值,虽然这个初始值只是一个空字符串,但符合要求,能够执行while 循环所需的比较。只要message 的值不是'quit' ,这个循环就会不断运行;

 首次遇到这个循环时,message 是一个空字符串,因此Python进入这个循环;

 执行到代码行message = input(prompt) 时,Python显示提示消息,并等待用户输入。不管用户输入是什么,都将存储到变量message 中并打印出来;

 接下来,Python重新检查while 语句中的条件。只要用户输入的不是单词'quit' ,Python就会再次显示提示消息并等待用户输入。等到用户终于输入'quit' 后,Python停止执行while 循环,而整个程序也到此结束。


2.2.3 使用标志

程序在满足指定条件时就执行特定的任务,直到某个事件导致指定条件不满足。但在复杂的程序中,很多不同的事件都会导致程序停止运行,可定义一个变量,用于判断整个程序是否处于活动状态。这个变量被称为标志,充当了程序的交通信号灯。标志为True 时继续运行,并在任何事件导致标志的值为False 时让程序停止运行。这样,在while 语句中就只需检查一个条件——标志的当前值是否为True ,并将所有测试(是

否发生了应将标志设置为False 的事件)都放在其他地方,从而让程序变得更为整洁。

示例:

prompt = "\nTell me something, and I will repeat it back to you:"

prompt += "\nEnter 'quit' or 'exit' to end the program. "

active = True

while active:

  message = input(prompt)

  if message in ('quit','exit') :

      active = False

  else:

      print(message)


2.2.4 使用break 退出循环

要立即退出while 循环,也包括for循环,不再运行循环中余下的代码,也不管条件测试的结果如何,可使用break 语句。示例:

prompt = "\nPlease enter the name of a city you have visited:"

prompt += "\n(Enter 'quit' when you are finished.) "

while True:

  city = input(prompt)

  if city == 'quit':

      break

  else:

      print("I'd love to go to " + city.title() + "!")


2.2.5 在循环中使用continue

continue 语句不再执行循环中后面的代码,返回到循环开头继续循环。break 语句不再执行余下的代码并退出整个循环,即不再执行循环。示例:来看一个从1数到10,但只打印其中奇数。


2.2.6 避免无限循环

每个while 循环都必须有停止运行的途径,这样才不会没完没了地执行下去。(特殊应用中需要无限循环)。

x = 1

while x <= 5:

    print(x)

    x += 1  #注意:遗漏该代码则会变为无限循环


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

for循环是一种遍历列表的有效方式,但在for 循环中修改列表,将会导致Python难以跟踪其中的元素。要在遍历列表的同时对其进行修改,可使用while 循环。通过while 循环同列表和字典结合起来使用,可收集、存储并组织大量输入,供以后查看和显示。

2.2.7.1 在列表之间移动元素

实例:设定一个列表包含新注册但还未验证的网站用户;验证户后将他们移到另一个已验证用户列表中。

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())

示例详细说明:

 首先创建了一个未验证用户列表,其中包含用户Alice、Brian和Candace

 创建一个空列表,将来用于存储已验证的用户。

 while 循环将不断地运行(用while unconfirmed_users判断),直到列表unconfirmed_users 变成空的;

 循环中函数pop() 以每次一个的方式从列表unconfirmed_users 末尾删除未验证的用户。由于Candace位于列表unconfirmed_users 末尾,因此其名字将首先被删除并存储到变量current_user 中并加入到列表confirmed_users 中。接下来是Brian,然后是Alice。

 为模拟用户验证过程,我们打印一条验证消息并将用户加入到已验证用户列表中。未验证用户列表越来越短,而已验证用户列表越来越长。未验证用户列表为空后结束循环,再打印已验证用户列表。


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

使用函数remove() 来删除列表中的特定值,当特定值重复出现时,则只会删除第一次出现的值,可使用循环删除全部特定值。实例:假设你有一个宠物列表,删除多个值为'cat' 的元素。

pets = ['dog', 'cat', 'dog', 'goldfish', 'cat', 'rabbit', 'cat']

print(pets)

while 'cat' in pets:

    pets.remove('cat')

print(pets)


2.2.7.3 使用用户输入来填充字典

实例:创建一个调查程序,其中的循环每次执行时都提示输入被调查者的名字和回答。我们将收集的数据存储在一个字典中,以便将回答同被调查者关联起来。

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 + ".")

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容