Python--用户输入与While循环

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

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

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

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

1.1 编写清晰的提示

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

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

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

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

>>> age = input("How old are you? ")How old are you? 21
>>> age = int(age)
>>> age >= 18
True

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

1.3 求模运算符

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

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

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

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

2、While循环

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

2.1 使用While循环

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

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

2.2 让用户选择何时退出

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

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)

2.3 使用标志

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

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

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

prompt = "\nTell me something, and I will repeat it back to you:"prompt += "\nEnter 'quit' to end the program. "active = True
while active:message = input(prompt)if message == 'quit':active = Falseelse:print(message)

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

2.4 使用break退出循环

想⽴即退出 while 循环,不再运⾏循环中 余下的代码,可使⽤ 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':breakelse:print(f"I'd love to go to {city.title()}!")

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

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

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

2.5 在循环中使用continue

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

current_number = 0
while current_number < 10:current_number += 1if current_number % 2 == 0:continueprint(current_number)

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

2.6 避免无限循环

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

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

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

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

3、While处理列表和字典

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

3.1 在列表中移动元素

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

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

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

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

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

# ⾸先,创建⼀个待验证⽤户列表
# 和⼀个⽤于存储已验证⽤户的空列表
unconfirmed_users = ['alice', 'brian', 'candace']confirmed_users = []# 验证每个⽤户,直到没有未验证⽤户为⽌# 将每个经过验证的⽤户都移到已验证⽤户列表中
while unconfirmed_users:current_user = unconfirmed_users.pop()print(f"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())

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

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

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

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

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

如下 所⽰:

pets = ['dog', 'cat', 'dog', 'goldfish', 'cat', 'rabbit', 'cat']
print(pets)
while 'cat' in pets:pets.remove('cat')
print(pets)

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

3.3 使用用户输入填充字典

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

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(f"{name} would like to climb {response}.")

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/78385.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

fabic如何将绘图原点移到画布中心

情况说明&#xff1a; fabic默认绘图原点为left&#xff1a;0&#xff0c;top&#xff1a;0 后端给我的内容是按照x&#xff0c;y返回的&#xff0c;需要将坐标系移到fabic画布的中心位置&#xff0c;找了下网上合适的砖&#xff0c;想一句命令直接设置&#xff0c;结果没有。…

改造el-dropdown ,实现多选效果,且当选项只剩下一个时,不允许取消

实现效果 实现代码 其中virtual-list是使用的插件,使得下拉数据多的时候,不会出现卡顿 正常不使用虚拟列表的时候可以这样写 <el-dropdown-menu slot"dropdown"><el-dropdown-item v-for"i in item.optionList" :key"i.id" :command&…

前端验证弱密码代码记录

password: [{ required: !props.id? true:false , trigger: blur,validator: (rule, value, callback, source, options) > {const pwdRegex new RegExp((?.*[0-9])(?.*[a-zA-Z])(?.*[^a-zA-Z0-9]).{8,30})if (!props.id && value ) {callback(new Error(请输…

前端面试合集(三——浏览器)

浏览器的页面渲染 1.浏览器是如何渲染页面的&#xff1f;2. 什么是reflow(重排&#xff09;&#xff1f;3. 什么是repaint(重绘&#xff09;&#xff1f;4.为什么transform效率高&#xff1f; 1.浏览器是如何渲染页面的&#xff1f; 当浏览器的网络线程收到HTML文档之后&#…

AI已经改变游戏规则,新环境下如何用好这一新利器,提升开发团队的生产力

ChatGPT 4在今年3月刚刚发布&#xff0c;但在短短几个月内&#xff0c;它已经开始改变多个行业开发材料和资产的方式。 作为Perforce Software的首席技术官&#xff0c;我密切关注着新兴技术如何重新塑造和定义既定的工作步骤与流程。在我近30年的软件开发经验中&#xff0c;很…

【再识C进阶2(下)】详细介绍指针的进阶——利用冒泡排序算法模拟实现qsort函数,以及一下习题和指针笔试题

前言 &#x1f493;作者简介&#xff1a; 加油&#xff0c;旭杏&#xff0c;目前大二&#xff0c;正在学习C&#xff0c;数据结构等&#x1f440; &#x1f493;作者主页&#xff1a;加油&#xff0c;旭杏的主页&#x1f440; ⏩本文收录在&#xff1a;再识C进阶的专栏&#x1…

探究Nginx应用场景

1 静态资源 Nginx是一个流行的Web服务器和反向代理服务器&#xff0c;它可以用于托管静态资源。下面是一个简单的案例&#xff0c;展示了如何使用Nginx来提供静态资源。 假设你有一个名为example.com的域名&#xff0c;并且你希望使用Nginx来托管位于/var/www/html目录下的静…

CopyOnWriteArrayList源码分析

其中唯一的线程安全 List 实现就是 CopyOnWriteArrayList。 特点 由于读取操作不会对原有数据进行修改&#xff0c;因此&#xff0c;对于每次读取都进行加锁其实是一种资源浪费。相比之下&#xff0c;我们应该允许多个线程同时访问 List 的内部数据&#xff0c;毕竟对于读取操…

MeterSphere压测,出现HttpHostConnectException

现象&#xff1a;MeterSphere更换压力机后&#xff0c;压测出现出现HttpHostConnectException 解决方案&#xff1a; net.ipv4.tcp_tw_reuse默认是0或者2&#xff0c;更改为1 net.ipv4.tcp_tw_reuse&#xff0c;表示是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连…

第二十一章 Classes

文章目录 第二十一章 ClassesClasses类名和包类定义的基本内容 第二十一章 Classes Classes 类定义并不是 ObjectScript 的正式组成部分。相反&#xff0c;可以在类定义的特定部分中使用 ObjectScript&#xff08;特别是在方法定义中&#xff0c;可以在其中使用其他实现语言&…

vue 项目代码混淆配置(自定义插件适用)带配置项注释

文章目录 vue 项目代码混淆配置&#xff08;自定义插件适用&#xff09;带配置项注释一、概要二、混淆步骤1. 引入混淆插件2. 添加混淆配置3. 执行代码混淆 vue 项目代码混淆配置&#xff08;自定义插件适用&#xff09;带配置项注释 一、概要 本文章适用 vue-cli3/webpack4 …

企业架构LNMP学习笔记41

企业架构缓存中间件分布式memcached&#xff1a; 学习目标和内容&#xff1a; 能够理解描述网站业务访问流程 能够理解网站业务的优化方向 能够描述内存缓存软件Memcached的作用 能够通过命令操作Memcached 能够安装php的memcached扩展extension 能够实现session存储到m…

拥有十亿美元的财富,靠外汇交易发家,还与查尔斯王子是知交

Urs Schwarzenbach&#xff08;乌尔斯施瓦岑巴赫&#xff09;是英国上流社会最有钱的亿万富豪之一。他曾经轰动一时的专业交易员这个身份&#xff0c;已经越来越少被提起。如今你问很多外汇交易者&#xff0c;他们可能都会摇头称不知道这个人吧。 如果提到瑞士最大的传统货币兑…

时序分解 | MATLAB实现基于SSA奇异谱分析的信号分解分量可视化

时序分解 | MATLAB实现基于LMD局部均值分解的信号分解分量可视化 目录 时序分解 | MATLAB实现基于LMD局部均值分解的信号分解分量可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 奇异谱分解奇异谱分析SSA 可直接替换txt数据运行 Matlab 1.包含3D分解效果图 频谱图等…

Linux UDP编程流程

文章目录 UDP编程流程UDP协议无连接的特点UDP协议数据报的特点 UDP编程流程 UDP 提供的是无连接、不可靠的、数据报服务。服务器端和客户端没有什么本质上的区别。编程流程如下&#xff1a; socket()用来创建套接字&#xff0c;使用 udp 协议时&#xff0c;选择数据报服务 SOC…

Spring基础(2w字---学习总结版)

目录 一、Spirng概括 1、什么是Spring 2、什么是容器 3、什么是IoC 4、模拟实现IoC 4.1、传统的对象创建开发 5、理解IoC容器 6、DI概括 二、创建Spring项目 1、创建spring项目 2、Bean对象 2.1、创建Bean对象 2.2、存储Bean对象&#xff08;将Bean对象注册到容器…

IMU+摄像头实现无标记运动捕捉

惯性传感和计算机视觉的进步为在临床和自然环境中获得精准数据带来了新可能。然而在临床应用时需要仔细地将传感器与身体对齐&#xff0c;这减慢了数据收集过程。 随着无标记运动捕捉的发展&#xff0c;研究者们提出了一个新的深度学习模型&#xff0c;利用来自视觉、惯性传感…

金和OA GetSqlData.aspx 远程命令执行漏洞

一、漏洞简介 金和OA协同办公管理系统C6软件共有20多个应用模块,160多个应用子模块,涉及的企业管理业务包括协同办公管理、人力资源管理、项目管理、客户关系管理、企业目标管理、费用管理等多个业务范围,从功能型的协同办公平台上升到管理型协同管理平台,并不断的更新完善…

每日刷题-5

目录 一、选择题 二、算法题 1、不要二 2、把字符串转换成整数 一、选择题 1、 解析&#xff1a;printf(格式化串&#xff0c;参数1&#xff0c;参数2,.….)&#xff0c;格式化串: printf第一个参数之后的参数要按照什么格式打印&#xff0c;比如%d--->按照整形方式打印&am…

2023备战秋招Java面试八股文合集

Java就业大环境仍然根基稳定&#xff0c;市场上有很多机会&#xff0c;技术好的人前景就好&#xff0c;就看你有多大本事了。小编得到了一份很不错的资源&#xff0c;建议大家可以认真地来看看以下的资料&#xff0c;来提升一下自己的核心竞争力&#xff0c;在面试中轻松应对面…