• Python--用户输入与While循环


    1、input() 函数的工作原理

    input() 函数让程序暂停运⾏,等待⽤户输⼊⼀些⽂本。获取⽤户输⼊ 后,Python 将其赋给⼀个变量,以便使⽤。

    1. message = input("Tell me something, and I will repeat it back to you:
    2. ")
    3. print(message)

    input() 函数接受⼀个参数,即要向⽤户显⽰的提⽰(prompt),让⽤户 知道该输⼊什么样的信息。

    1.1 编写清晰的提示

    • 每当使⽤ input() 函数时,都应指定清晰易懂的提⽰
    • 在提⽰末尾(这⾥是冒号后⾯)添加⼀个空格,将提示与用户输入分开
    • 提示超过一行时,先将提⽰赋给⼀个变量,再将这个变量传递给 input() 函数。
    1. prompt = "If you share your name, we can personalize the messages you
    2. see."
    3. prompt += "\nWhat is your first name? "
    4. name = input(prompt)
    5. print(f"\nHello, {name}!")

    1.2 使用int() 来获取值得输入

    1. >>> age = input("How old are you? ")
    2. How old are you? 21
    3. >>> age >= 18
    4. Traceback (most recent call last):
    5. File "", line 1, in <module>
    6. TypeError: '>=' not supported between instances of 'str' and 'int'

    Python 报错,因为它⽆法将 字符串和整数进⾏⽐较:不能将赋给 age 的字符串 '21' 与数值 18 进⾏ ⽐较

    1. >>> age = input("How old are you? ")
    2. How old are you? 21
    3. >>> age = int(age)
    4. >>> age >= 18
    5. True

    Python 将这个数解读为字符串,但随后 int() 将这个字符串转换成了数值表⽰

    1.3 求模运算符

    求模运算符(%)是个很有⽤的⼯具,它将两个数相除 并返回余数

    1. >>> 4 % 3
    2. 1
    3. >>> 5 % 3
    4. 2
    5. >>> 6 % 3
    6. 0
    7. >>> 7 % 3
    8. 1

    可利以来判断⼀个数是奇数还是偶数:

    • 偶数都能被 2 整除 number % 2 == 0
    • 否则是奇数

    2、While循环

    for 循环⽤于针对集合中的每个元素执⾏⼀个代码块,⽽ while 循环则不 断地运⾏,直到指定的条件不再满⾜为⽌。

    2.1 使用While循环

    可以使⽤ while 循环来数数。例如,下⾯的 while 循环从 1 数到 5:

    1. current_number = 1
    2. while current_number <= 5:
    3. print(current_number)
    4. current_number += 1

    2.2 让用户选择何时退出

    可以使⽤ while 循环让程序在⽤户愿意时不断地运⾏们在其中定义了⼀个退出值,只要⽤户输⼊的不是这个 值,程序就将⼀直运⾏:

    1. prompt = "\nTell me something, and I will repeat it back to you:"
    2. prompt += "\nEnter 'quit' to end the program. "
    3. message = ""
    4. while message != 'quit':
    5. message = input(prompt)
    6. print(message)

    2.3 使用标志

    在更 复杂的程序中,有很多不同的事件会导致程序停⽌运⾏。

    在要求满⾜很多条件才继续运⾏的程序中,可定义⼀个变量,⽤于判断整 个程序是否处于活动状态。这个变量称为标志(flag),充当程序的交通信 号灯。

    添加⼀个标志active(可以给它指定任何名称),⽤于判断程序是否应继续运⾏:

    1. prompt = "\nTell me something, and I will repeat it back to you:"
    2. prompt += "\nEnter 'quit' to end the program. "
    3. active = True
    4. while active:
    5. message = input(prompt)
    6. if message == 'quit':
    7. active = False
    8. else:
    9. print(message)

    在复杂的程序(⽐如有很多事件会导致 程序停⽌运⾏的游戏)中,标志很有⽤:在任意⼀个事件导致活动标志变 成 False 时,主游戏循环将退出。

    2.4 使用break退出循环

    想⽴即退出 while 循环,不再运⾏循环中 余下的代码,可使⽤ break 语句。

    1. prompt = "\nPlease enter the name of a city you have visited:"
    2. prompt += "\n(Enter 'quit' when you are finished.) "
    3. while True:
    4. city = input(prompt)
    5. if city == 'quit':
    6. break
    7. else:
    8. print(f"I'd love to go to {city.title()}!")

    以 while True 打头的循环将不断运行,直到遇到break语句。

    注意:在所有 Python 循环中都可使⽤ break 语句。例如,可使⽤

    break 语句来退出遍历列表或字典的 for 循环。

    2.5 在循环中使用continue

    要返回循环开头,并根据条件测试的结果决定是否继续执⾏循环,可使⽤ continue 语句。

    1. current_number = 0
    2. while current_number < 10:
    3. current_number += 1
    4. if current_number % 2 == 0:
    5. continue
    6. print(current_number)

    if 语句检查 current_number 与 2 的 求模运算结果。如果结果为 0(意味着current_number 可被 2 整除), 就执⾏ continue 语句,让 Python 忽略余下的代码,并返回循环的开头。

    2.6 避免无限循环

    每个 while 循环都必须有结束运⾏的途径,这样才不会没完没了地执⾏下 去。

    1. x = 1
    2. while x <= 5:
    3. print(x)
    4. x += 1

    如果像下⾯这样不⼩⼼遗漏了代码⾏ x += 1,这个循环将没完没了地运 ⾏:

    1. # 这个循环将没完没了地运⾏!
    2. x = 1
    3. while x <= 5:
    4. print(x)

    3、While处理列表和字典

    通过将 while 循环与列表和字典结合起来使⽤,可收 集、存储并组织⼤量的输⼊,供以后查看和使⽤。

    3.1 在列表中移动元素

    假设有⼀个列表包含新注册但还未验证的⽹站⽤户。验证这些⽤户后,如

    何将他们移到已验证⽤户列表中呢?

    ⼀种办法是使⽤⼀个 while 循环,

    在 验证⽤户的同时将其从未验证⽤户列表中提取出来,再将其加⼊已验证⽤

    户列表。代码可能类似于下⾯这样:

    1. # ⾸先,创建⼀个待验证⽤户列表
    2. # 和⼀个⽤于存储已验证⽤户的空列表
    3. unconfirmed_users = ['alice', 'brian', 'candace']
    4. confirmed_users = []
    5. # 验证每个⽤户,直到没有未验证⽤户为⽌
    6. # 将每个经过验证的⽤户都移到已验证⽤户列表中
    7. while unconfirmed_users:
    8. current_user = unconfirmed_users.pop()
    9. print(f"Verifying user: {current_user.title()}")
    10. confirmed_users.append(current_user)
    11. # 显⽰所有的已验证⽤户
    12. print("\nThe following users have been confirmed:")
    13. for confirmed_user in confirmed_users:
    14. print(confirmed_user.title())

    3.2 删除特定值的所有列表元素

    我们使⽤ remove() 函数来删除列表中的特定值。这之所以

    可⾏,是因为要删除的值在列表中只出现了⼀次。

    假设有⼀个宠物列表,其中包含多个值为 'cat' 的元素。

    要删除所有这些 元素,可不断运⾏⼀个 while 循环,直到列表中不再包含值 'cat',

    如下 所⽰:

    1. pets = ['dog', 'cat', 'dog', 'goldfish', 'cat', 'rabbit', 'cat']
    2. print(pets)
    3. while 'cat' in pets:
    4. pets.remove('cat')
    5. print(pets)

    ⾸先创建⼀个列表,其中包含多个值为 'cat' 的元素。打印这个列表后, Python 进⼊ while 循环,因为它发现 'cat' 在列表中⾄少出现了⼀次。 进⼊这个循环后,Python 删除第⼀个 'cat' 并返回 while 代码⾏,然后 发现 'cat' 还在列表中,因此再次进⼊循环。

    3.3 使用用户输入填充字典

    可以使⽤ while 循环提⽰⽤户输⼊任意多的信息。下⾯创建⼀个调查程序,其中的循环在每次执⾏时都提⽰输⼊被调查者的名字和回答。

    1. responses = {}
    2. # 设置⼀个标志,指出调查是否继续
    3. polling_active = True
    4. while polling_active:
    5. # 提⽰输⼊被调查者的名字和回答
    6. name = input("\nWhat is your name? ")
    7. response = input("Which mountain would you like to climb someday?
    8. ")
    9. # 将回答存储在字典中
    10. responses[name] = response
    11. # 看看是否还有⼈要参与调查
    12. repeat = input("Would you like to let another person respond?
    13. (yes/no) ")
    14. if repeat == 'no':
    15. polling_active = False
    16. # 调查结束,显⽰结果
    17. print("\n--- Poll Results ---")
    18. for name, response in responses.items():
    19. print(f"{name} would like to climb {response}.")

    这个程序⾸先定义了⼀个空字典(responses),并设置了⼀个标志 (polling_active)⽤于指出调查是否继续。只要 polling_active 为 True,Python 就运⾏ while 循环中的代码。

  • 相关阅读:
    php 进程池设计与实现,phper必学!
    目的:ubuntu配置使用opengl - 初探-创建一个空窗口
    python讲解(2)
    封装一个中间大两头小的轮播图(vue-awesome-swiper、vue2)
    Day13--自定义组件-封装自定义属性和click事件
    HTML5+CSS3+JS小实例:网格图库
    MybatisPlus 3 DQL 编程控制 3.4 映射匹配兼容性
    springboot项目配置多数据库连接
    Windows 下 Qt 可执行程序添加默认管理员权限启动(QMAKE、MinGW & MSVC)
    react recharts饼图 及配置项
  • 原文地址:https://blog.csdn.net/qq_62254095/article/details/132849264