python基础:用户输入和 while 循环

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

input() 函数让程序暂停运行,等待用户输入一些文本。获取用户输入后,Python 将其赋给一个变量,以便使用。

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

1. int() 来获取数值输入

在使用 input() 函数时,Python 会将用户输入解读为字符串。

>>> age = input('How old are you?')                                                                                     How old are you?21                                                                                                      
>>> age                                                                                                                 
'21'

当试图将该输入用于数值比较时,Python 会报错,因为它无法将字符串和整数进行比较

>>> age >= 18                                                                                                           
Traceback (most recent call last): File "<python-input-2>", line 1, in <module>                      
age >= 18  TypeError: '>=' not supported between instances of 'str' and 'int'

为了解决这个问题,可使用函数 int() 将输入的字符串转换为数值,确保能够成功地执行比较操作:

>>> age = int(age)                                                                                                      
>>> age >= 18                                                                                                           
True

2. 求模运算符

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

>>> 4 % 3
1
>>> 5 % 3
2

二、while 循环简介

for 循环用于针对集合中的每个元素执行一个代码块,而 while 循环则不断地运行,直到指定的条件不再满足为止

1. 使用 while 循环

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

current_number = 1
while current_number <= 5:print(current_number)current_number += 1'''
结果:
1
2
3
4
5
'''

2. 让用户选择何时退出

我们在其中定义了一个退出值,只要用户输入的不是这个值,程序就将一直运行:

prompt = "\nTell me something, and I will repeat it back to you:"
prompt += "\nEnter 'q' to end the program."
message = ''
while message != 'q':message = input(prompt)print(message)
'''
结果:
Tell me something, and I will repeat it back to you:
Enter 'q' to end the program.w
wTell me something, and I will repeat it back to you:
Enter 'q' to end the program.r
rTell me something, and I will repeat it back to you:
Enter 'q' to end the program.q
q'''

3. 使用标志

在要求满足很多条件才继续运行的程序中,可定义一个变量,用于判断整个程序是否处于活动状态。这个变量称为标志(flag),充当程序的交通信号灯。可以让程序在标志为 True 时继续运行,并在任何事件导致标志的值为False 时让程序停止运行。这样,在 while 语句中就只需检查一个条件:标志的当前值是否为 True。

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

4. 使用 break 退出循环

如果不管条件测试的结果如何,想立即退出 while 循环,不再运行循环中余下的代码,可使用 break 语句。break 语句用于控制程序流程,可用来控制哪些代码行将执行、哪些代码行不执行,从而让程序按你的要求执行你要执行的代码。

prompt = "\nTell me something, and I will repeat it back to you:"
prompt += "\nEnter 'q' to end the program."
message = ''
while True:city = input(prompt)if city == 'q':breakelse:print(f"I'd love {city}.")'''
结果:
Tell me something, and I will repeat it back to you:
Enter 'q' to end the program.sh
I'd love sh.Tell me something, and I will repeat it back to you:
Enter 'q' to end the program.yn
I'd love yn.Tell me something, and I will repeat it back to you:
Enter 'q' to end the program.q'''

5. 在循环中使用 continue

要返回循环开头,并根据条件测试的结果决定是否继续执行循环,可使用continue 语句,它不像 break 语句那样不再执行余下的代码并退出整个循环。例如,来看一个从 1 数到 10,只打印其中奇数的循环:

current_number = 0
while current_number < 10:current_number += 1if current_number % 2 == 0:continueprint(current_number)'''
结果:
1
3
5
7
9
'''

三、使用 while 循环处理列表和字典

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

1. 在列表之间移动元素

# 首先,创建一个待验证用户列表
# 和一个用于存储已验证用户的空列表
unconfirmed_users = ['alice', 'brian', 'candace']
confirmed_users = []
# 验证每个用户,直到没有未验证用户为止
# 将每个经过验证的用户都移到已验证用户列表中
while unconfirmed_users:current_user = unconfirmed_users.pop()print(f"Verifying user: {current_user}")confirmed_users.append(current_user)
# 显示所有的已验证用户
print("\nThe following users are confirmed:")
for confirmed_user in confirmed_users:print(confirmed_user.title())'''
结果:
Verifying user: candace
Verifying user: brian
Verifying user: aliceThe following users are confirmed:
Candace
Brian
Alice'''

2. 删除为特定值的所有列表元素

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

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? [Y/N]")if repeat == 'no':polling_active = False
print("\n--- Poll Results ---")
for name, responses in responses.items():print(f"{name}: {responses}")'''
结果:
What is your name? zhnagsan
Which mountain would you like to climb someday?taishan
Would you like to let another person respond? [Y/N]YWhat is your name? lisi
Which mountain would you like to climb someday?yueshan
Would you like to let another person respond? [Y/N]NWhat is your name? wangwu
Which mountain would you like to climb someday?qianlishan
Would you like to let another person respond? [Y/N]no--- Poll Results ---
zhnagsan: taishan
lisi: yueshan
wangwu: qianlishan
'''

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

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

相关文章

开启云服务器mysql本地连接(is not allowed to connect to this mysql server)

is not allowed to connect tothis mmysql server 阿里云上安装的mysql&#xff0c;发现用本地电脑的navicat链接不上。通过了解知道了原因&#xff0c;小二在此写了一篇&#xff0c;省的以后自己在碰到。 错误如图。 aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTU4MTU1My8…

电脑的时间同步电池坏掉了,每次开机都要调整时间

电脑的时间同步的电池没电了&#xff0c;每天开机时间都不对&#xff0c;要打开时间同步按钮来设置时间解决方案1.找到这个设置并打开&#xff0c;实际上&#xff0c;要打开这个界面&#xff0c;时间才会同步&#xff0c;可能是我的电脑原因&#xff0c;所以我没办法打开这个就…

mycat在游戏中的使用场景(邮件表,mysql集群,而不是邮件服)

其实还有一种是SharingJDBC&#xff0c;而且之间在B站的同学也是说用这个&#xff0c;但是我们目前项目邮件中用的却是: mycat&#xff0c;为什么呢&#xff1f;mycat其实是中间件&#xff0c;是需要独立部署的&#xff0c;是数据库服务器这块的代理&#xff0c;在应用层的话很…

TP-Link Archer C50路由器曝安全漏洞,硬编码DES密钥可解密敏感配置

漏洞概述CERT协调中心&#xff08;CERT/CC&#xff09;发布安全公告&#xff0c;披露TP-Link Archer C50路由器存在编号为CVE-2025-6982的漏洞。该漏洞源于路由器固件中使用了硬编码的DES&#xff08;数据加密标准&#xff09;解密密钥&#xff0c;这一设计缺陷使大量家庭和小型…

番茄项目3:完成了项目的数据库设计

今天抽了会时间设计了下表结构&#xff0c;并选定的使用的数据库&#xff0c;经过调查&#xff0c;我决定还是把数据存在数据库中&#xff0c;因为写SQL是我擅长的。 最终我选择使用python自带的sqlite来实现这个工具&#xff0c;具体建表语句如下&#xff1a; 基于AI生成&…

11、read_object_model_3d 读取点云

个人理解 read_object_model_3d 这个Halcon算子中的xyz_map_width这个参数设置的目的就是,把读取的点云数据中每一个点的XYZ坐标,生成一个对应的二维图像,其中图像中的坐标值就对应每一个点的索引坐标,而图像中的灰度值就对应xyz坐标??(因为得到的是三通道图像)!!并且根…

【人工智能-17】机器学习:KNN算法、模型选择和调优、朴素贝叶斯分类

上一期【人工智能-16】机器学习&#xff1a;概念、工具介绍、数据集、特征工程 文章目录一 、KNN算法1. 应用理由2. 原理核心&#xff1a;距离度量 多数投票/平均3. 优点和缺点二、模型选择和调优1.使用理由2.原理核心&#xff1a;数据划分与性能平均3.超参数搜索4. 应用场景总…

关于继承的一些知识(C++)

当我们想要设计几个类分别记录老师&#xff0c;学生的个人信息时会发现&#xff0c;像姓名、地址、身份证号、电话等等记录基础信息的成员变量是都具有的&#xff0c;重复定义会显得冗余&#xff0c;但同时它们两者又具有不同的记录信息的成员变量&#xff0c;像学生需要记录学…

永磁同步电机无速度算法--脉振方波注入法

一、原理介绍为了实现表贴式永磁电机的低速运行&#xff0c;研究一种基于高频方波测试信号注入的无位置零低速传感器控制策略。选取注入到观测直轴的脉振高频方波信号&#xff0c; 该信号注入方案可以有效避免旋转信号注入法在转子交轴分量引起转矩脉动&#xff0c; 提高系统的…

VSCode Python 与 C++ 联合调试配置指南

VSCode Python 与 C 联合调试配置指南 为了实现 Python 与 C 的联合调试&#xff0c;需要正确配置 launch.json 文件&#xff0c;具体配置如下&#xff1a; {// IntelliSense 支持查看属性描述// 更多信息请参考: https://go.microsoft.com/fwlink/?linkid830387"version…

stm32和freeRtos的can总线

STM32内置bxCAN外设&#xff08;CAN控制器、拓展CAN&#xff09;&#xff0c;支持CAN2.0A和2.0B(全部的CAN)&#xff0c;可以自动发送CAN报文和按照过滤器自动接收指定CAN报文&#xff0c;程序只需处理报文数据而无需关注总线的电平细节波特率最高可达1兆位/秒&#xff0c;高速…

充电桩与照明“联动”创新:智慧灯杆破解新能源基建难题

伴随新能源汽车保有量呈现出极为迅猛的爆发式增长态势&#xff0c;充电基础设施的建设已然逐步成为城市发展进程中不可或缺的刚性需求。国家政策鼓励推进充电设施同城市基础设施展开一体化的建设工作&#xff0c;同时大力鼓励“诸如路灯、监控杆这类市政设施去整合充电相关功能…

datagrip连接mysql数据库过程以及遇到的问题

如果遇到这种错误说明时区错误&#xff0c;解决方法 jdbc:mysql://localhost:3306?serverTimezoneGMTdatagrip连接mysql数据库下一步

Vue 3.5 defineModel:让组件开发效率提升 10 倍

简介 defineModel 是 Vue 3.4 引入并在 Vue 3.5 中稳定的一个组合式 API&#xff0c;它简化了组件的双向数据绑定实现。在此之前&#xff0c;实现双向绑定需要手动定义 props 和 emits&#xff0c;而 defineModel 将这个过程自动化&#xff0c;让代码更加简洁和直观。 主要特…

性能测试-性能测试中的经典面试题一

一、核心概念与流程类性能测试的核心类型与区别负载测试&#xff1a;逐步加压&#xff0c;探测系统阈值&#xff08;如最大TPS/响应时间&#xff09;。压力测试&#xff1a;超越阈值施压&#xff0c;验证系统崩溃点及恢复能力。稳定性测试&#xff1a;80%~90%峰值压力持续运行&…

华为昇腾芯片:多模态模型国产化的硬核突破

前言 在当今数字化时代&#xff0c;人工智能技术的发展日新月异&#xff0c;多模态模型作为 AI 领域的重要发展方向&#xff0c;正逐渐改变着人们与计算机交互的方式以及众多行业的运作模式。多模态模型能够处理多种类型的数据&#xff0c;比如图像、文本、语音等&#xff0c;从…

阿里智能AI框架Playground,即学即用

Spring AI Alibaba Playground 是 Spring AI Alibaba 社区以 Spring AI Alibaba 和 Spring AI 为框架搭建的 AI 应用。包含完善的前端 UI 后端实现&#xff0c;具备对话&#xff0c;图片生成&#xff0c;工具调用&#xff0c;RAG&#xff0c;MCP 等众多 AI 相关功能。在 playg…

智能Agent场景实战指南 Day 28:Agent成本控制与商业模式

【智能Agent场景实战指南 Day 28】Agent成本控制与商业模式 文章标签 AI Agent, 成本优化, 商业模式, LLM应用, 企业级AI 文章简述 本文是"智能Agent场景实战指南"系列的第28天&#xff0c;聚焦智能Agent的成本控制与商业模式设计这一关键课题。文章首先分析了Ag…

sqli-labs:Less-8关卡详细解析

1. 思路&#x1f680; 本关的SQL语句为&#xff1a; $sql"SELECT * FROM users WHERE id$id LIMIT 0,1";注入类型&#xff1a;字符串型&#xff08;单引号包裹&#xff09;提示&#xff1a;参数id需以闭合 同样无法像常规一样回显&#xff0c;php输出语句的代码如下&…

LeetCode 1782.统计点对的数目

给你一个无向图&#xff0c;无向图由整数 n &#xff0c;表示图中节点的数目&#xff0c;和 edges 组成&#xff0c;其中 edges[i] [ui, vi] 表示 ui 和 vi 之间有一条无向边。同时给你一个代表查询的整数数组 queries 。 第 j 个查询的答案是满足如下条件的点对 (a, b) 的数…