当前位置: 首页 > news >正文

【Python零基础】while循环和用户输入

文章目录

  • 前言
  • 一、input()函数
  • 二、while循环
  • 三、使用while循环来处理列表和字典
  • 总结


前言

我们开发一个应用程序,目的都是为了解决最终用户的问题,针对用户界面输入的数据,按照用户期待的逻辑进行处理,得到用户想要的结果。本章将简要介绍有一定交互效果的Python程序代码。


一、input()函数

在Python中,input() 函数用于从标准输入(通常是用户的键盘)读取一行文本,并以字符串的形式返回。如果用户输入了一些内容并按下了回车键,input() 就会返回用户输入的内容。如果没有输入任何内容直接按下回车键,则返回一个空字符串。

简单用法示例如下

user_input = input("请输入一些文本: ")
print("您输入的是:", user_input)

在这里插入图片描述

具体运行过程为:点击运行按钮后,控制台将打印"请输入一些文本:",输入文本后回车即可,控制台打印出刚才输入的内容,这是一次简单的交互。

使用 int()获取数值输入

input()函数会把控制台输入的数字解读成字符串,此时我们徐要借助int()函数来将其转换成数值

user_input = input("请输入你的年龄: ")age = int(user_input)if age >= 18:print("你已成年")
if age >= 65:print("你已经是老人了")
else:print("你还是年轻")

在这里插入图片描述

求模运算符 %

求模运算符是把两数相除,取余的过程。这里笔者同时展示下/除法运算符,代码如下

print(7/3)
print(7%3)

在这里插入图片描述


二、while循环

使用while循环

简单的while循环,打印数字,从1到5

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

在这里插入图片描述
首先声明了一个变量 current_number,初始赋值为1,只要current_number小于等于5,就进入while循环,打印当前变量current_number,并加一,再次循环判断,重复步骤,直到current_number值超过5。

用户决定何时退出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)if message == 'quit':breakprint(message)

当我们在控制台输入quit时,便会退出while循环,输入其他的字符时则只会打印出来,并继续while循环等待用户控制台输入。

在这里插入图片描述

使用标志退出循环
当我们的代码需要判断多个不同的条件是否进入循环时,我们需要一个统一的标志。

# 初始化标志变量
continue_loop = Truewhile continue_loop:# 获取用户输入user_input = input("请输入一个数字: ")# 使用 if 条件判断用户输入的数字if int(user_input) > 10:print("你输入的数字大于 10!")elif int(user_input) == 10:print("你输入的数字等于 10!")else:print("你输入的数字小于或等于 10!")# 决定是否继续循环continue_input = input("你想继续吗?(y/n): ")if continue_input.lower() != 'y':continue_loop = Falseprint("循环结束")

这段 Python 代码通过一个 while 循环实现了与用户交互的功能:首先提示用户输入一个数字,并根据数字的大小输出相应的信息;然后询问用户是否希望继续执行这一过程,直到用户选择停止为止。

在这里插入图片描述

使用break退出循环

对上面的代码简单修改,不使用标志,while循环条件始终为True。循环内部判断是否跳出循环,使用关键字 break

while True:# 获取用户输入user_input = input("请输入一个数字: ")# 使用 if 条件判断用户输入的数字if int(user_input) > 10:print("你输入的数字大于 10!")elif int(user_input) == 10:print("你输入的数字等于 10!")else:print("你输入的数字小于或等于 10!")# 决定是否继续循环continue_input = input("你想继续吗?(y/n): ")if continue_input.lower() != 'y':breakprint("循环结束")

在这里插入图片描述

注意:break是不执行后续循环体内代码,并退出循环

循环中使用continue关键字

continue和break是有区别的,continue是不继续执行当前循环代码,直接进入下一次循环

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

代码展示了打印1-10中所有奇数

在这里插入图片描述

日常编码中要注意避免写出死循环的代码,需要我们对跳出循环的条件加以测试,并保证总会有条件退出循环。当然在一些确实需要一直进行死循环的场景,我们无需考虑。


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

for循环是一种遍历列表的有效方式,但是不应该在for循环中修改列表。我们应该使用while循环来遍历并修改列表。

在列表之间移动元素

# 首先,创建一个待验证用户列表
# 和一个用于存储已验证用户的空列表
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())

这段代码主要实现用户验证的功能。首先创建一个待验证用户列表和一个空的已验证用户列表。然后使用while循环,逐个取出待验证用户列表中的用户进行验证,验证后的用户将被移入已验证用户列表。最后打印出所有已验证的用户。

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

前面说过,删除列表中的特定值,使用remove就可以,但是remove只会删除第一个,特定值有多个怎么删除?答案是借助while循环

languages = ["Java", "Python", "C++", "JavaScript", "Ruby", "Java"]while "Java" in languages:languages.remove("Java")print(languages)

在这里插入图片描述

使用用户输入来填充字典

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

responses = {}  # 初始化一个空字典# 设置一个标志,用于控制循环何时停止
polling_active = Truewhile polling_active:# 提示用户输入信息name = input("\n您的名字是什么? ")language = input("您喜欢哪种编程语言? ")# 存储响应responses[name] = language# 看看是否还有其他人参与调查repeat = input("您想让其他人也参与回答吗?(是/否) ")if repeat == '否':polling_active = False# 调查结束,显示结果
print("\n--- 调查结果 ---")
for name, language in responses.items():print(f"{name} 喜欢 {language}。")

在这里插入图片描述

总结

通过本文,我们学会了如何在程序中使用input()来让用户提供信息;如何处理文本和数字输入,以及如何使用while循环让程序按用户的要求不断地运行;多种控制while循环流程的方式:设置活动标志、使用break语句以及使用continue语句;如何使用while循环在列表之间移动元素,以及如何从列表中删除所有包含特定值的元素;如何结合使用while循环和字典。

对于文中的代码示例,我们应该多加练习才能掌握。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • SPI驱动学习一(协议原理)
  • 硬件服务器操作系统的选择:Linux 还是 Windows?
  • 地理科学专业| 中国大学排行榜(2024年)
  • PgSQL HashAgg算法 | 第2期 | 版本12的spill溢出磁盘解秘
  • linux之ELK
  • [Hdp] lc552. 学生出勤记录 II(dp+递推+状态定义+状态转移+向前转移+好题)
  • Clichouse数据导出导入(数据迁移)
  • 重头开始嵌入式第二十三天(进程2)
  • Unity | 性能优化
  • 【分享】格力手机色界G0245D 刷REC、root、 救砖、第三方rom教程和资源
  • 论文辅导 | 基于改进灰色预测模型的港口物流需求预测研究
  • opencv图像基本操作
  • [MRCTF2020]套娃1
  • 实验五之用Processing绘画
  • 洛谷p4018题解
  • 【翻译】babel对TC39装饰器草案的实现
  • java 多线程基础, 我觉得还是有必要看看的
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • Java的Interrupt与线程中断
  • js ES6 求数组的交集,并集,还有差集
  • JS题目及答案整理
  • Python实现BT种子转化为磁力链接【实战】
  • SOFAMosn配置模型
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 区块链将重新定义世界
  • 数组的操作
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 赢得Docker挑战最佳实践
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • #vue3 实现前端下载excel文件模板功能
  • #每日一题合集#牛客JZ23-JZ33
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (02)Hive SQL编译成MapReduce任务的过程
  • (4)(4.6) Triducer
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (zhuan) 一些RL的文献(及笔记)
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (一) storm的集群安装与配置
  • (转载)虚函数剖析
  • (轉)JSON.stringify 语法实例讲解
  • .NET 5种线程安全集合
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .Net 代码性能 - (1)
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .net操作Excel出错解决
  • .NET单元测试
  • .py文件应该怎样打开?
  • @AliasFor注解
  • @Transactional 详解
  • [ C++ ] 类和对象( 下 )
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(朱雀组)