python 的用户输入和 while 循环使用说明

news2024/11/17 22:32:37

文章目录

        • 1. 函数 input() 的工作原理
          • 1.1 使用 int() 来获取整数类型
          • 1.2 % 求模运算符
          • 1.3 版本问题
        • 2. while 循环简介
          • 2.1 使用示例
          • 2.2 利用while循环实现用户选择退出
          • 2.3 标志的使用
          • 2.4 break 语句
          • 2.5 continue 语句
          • 2.6 避免无限循环
        • 3. 使用 while 循环来处理列表和字典
          • 3.1 在列表之间移动元素
          • 3.2 删除包含特定值的所有列表元素
          • 3.3 使用用户输入来填充字典

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

大多数程序的宗旨都是为了最终解决用户的问题,
为此通常需要从用户那里获取一些信息。

在 使用python的编程过程中,我们可以利用 input 函数来实现用户录入信息的功能。

我们来看示例:
函数 input() 让程序暂停运行,等待用户输入一些文本。

message = input("请录入信息")
print(message)

函数 input() 中的参数信息,就是程序运行之后,提示给用户的信息。
如图:
在这里插入图片描述
虽然只有两行代码,没有什么逻辑。
但是用户依然可以在端口中录入信息。

用户录入信息之后,敲击回车,录入的信息就会存储在变量 message当中,
然后运行到第二行代码,输出打印我们看到的信息,也就是用户录入的 兔C。
在这里插入图片描述

1.1 使用 int() 来获取整数类型

int() 函数是为了避免 用input() 函数来接收用户录入整数类型的值时发生的问题。
先写个示例给大家看一下:

message = input("请问您今年贵庚?")
print(message)

如果这样接收用户录入的整数类型,被接收的信息将会是什么类型?
我们输出看一下
在这里插入图片描述

输出的接收到的信息是 15,
看不出来是整数还是字符串,那 在和整数类型的值比较一下呢?

message = input("请问您几年贵庚")
print(message)
message >=18

这里都没有在用一次 print输出一下,在运行的结果就会发生类型错误。
在这里插入图片描述
想解决这个问题,用int() 函数来接收用户录入的数字信息就可以了。
我们来改一下示例代码:

age = input("请问您的贵庚?")
age = int(age)
print(age)

print(age > 18)

在来看一下 用 int 函数转换 age接收后的信息是否可以进行与数字类型比较。
在这里插入图片描述

1.2 % 求模运算符

在编程中,我们也可以进行数学的四则运算。
而在编程中,除数计算想获得计算余数的返回,就需要用到求模运算符。

print(6%4)

例如 6/2 除不尽 有余数,那余数是多少,我们将应该编写的 / 号改为 % 取模。
来看一下是否可以正确返回余数:
在这里插入图片描述

1.3 版本问题

这个专栏中的 python 文章,都是基于 3.0+ 的 python 版本的。
如果使用 2.0+的版本,是有区别的,
例如 input() 函数,在 2.0+ 版本中,应该使用的是 raw_input()来提示用户录入。这个函数的功能与3.0+中的input() 函数一样。

当然, 2.0+版本当中也有input() 函数,但它将用户录入的信息解读为 python代码,并尝试运行他们。最好的结果是出现错误。糟糕的是,可能会运行你原本无意运行的代码。

2. while 循环简介

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

2.1 使用示例

使用 while 循环 数1到5的数字

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

其实逻辑还是我们之前文章讲述过的,没有复杂的逻辑,只要理清新概念的语法实现出来并没有难度。

2.2 利用while循环实现用户选择退出

可以利用while循环来实现让用户在选择不关闭程序的状态下持续运行。

prompt = "请您输入 quit 来确认关闭程序。"
message =""

while message != "quit":
	message = input(prompt)
	if message !="quit":
	print(message)
print('程序已经关闭')

在这段代码中,我们先设置好提示信息和一个空的变量用于接收用户输入的信息并方便循环时判断。进入循环,在 message 这个变量没有接收到quit值时,就不断的循环运行程序。如果用户通过input函数录入 quit值,就将这个值存储到message当中,再下次循环时,程序就会关闭了。

2.3 标志的使用
active = True
prompt = '请您输入 quit 来确认关闭程序。'
while True:
	message = input(prompt)
	if message == 'quit':
		active = False
	else:
		print(message)

这次的代码逻辑和2.2中的代码逻辑相同,只不过我们利用了标志来进行判断,而不在是变量当中接收到的字符串值。我们先将标志的初始值设置为 true值,如果标志的值为true就进入到循环当中,在循环中,变量message接收到用户录入的信息,如果接收到的信息为 quit值,就将标志的true值,更改为 false值,结束程序的运行,因为false值,无法进入到下一次的循环当中。

2.4 break 语句

之前的两个实例中,结束程序运行的过程,都会将循环体当中余下的代码也执行完成,如果想跳过后述冗余代码的执行,可以通过 break语句。

break 语句,就是用于控制程序流程。
我们先将上面的代码示例粘下来,然后在 if 语句当中添加进 break

active = True
prompt = '请您输入 quit 来确认关闭程序。'
while active:
	message = input(prompt)
	if message == 'quit':
		break
	else:
		print(message)

这样加入 break 语句的循环就产生了微妙的变化,当标志为 true 值时,执行循环当中的逻辑,判断用户录入的信息是否为 quit值,就利用 break 语句结束循环的运行。不在执行break后续的代码逻辑。

2.5 continue 语句

break 语句可以理解成结束循环,而 continue 语句可以理解成结束当前次的循环。

我们来写一个示例,循环遍历输出1-10之间的数,
在这个输出过程中,利用 continue 只让其打印奇数。

number = 0
while number < 10:
	number+=1
	if number % 2 == 0:
		continue
		
	print(number)

在这段代码中:
先设置了一个变量,用于存储要计算的数字,数字从0开始,由于0 小于 10,所以进入到循环中,0+1等于1,继续进行if判断,1除以2是否有余数,有余数说明不能被整除,然后输出1,循环继续执行,+1等于2, 2小于10,但是除以2没有余数,说明是偶数,continue结束当前次循环,省略输出,然后循环从头开始…

2.6 避免无限循环

我们近期的文章中,只要用到 循环的地方都设置了合理的条件,如果使用循环时,设置的条件不合乎逻辑就会出现无限循环的情况。

如果你也像我一样使用 Geany 这款编辑器,然后运行测试程序的也是黑窗口,
出现 无限循环的情况 可以按住 Ctrl + C 结束。

在编写程序用到循环的环境中,一定要做好测试,避免无限循环的情况出现,
而出现这种情况,也一定是因为设置的条件不合乎逻辑。

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

使用 for循环 遍历列表或者字典不建议修改其中的元素,因为会导致 python 难以跟踪其中的元素,如果想在循环过程中做元素的修改,建议使用 while循环。

3.1 在列表之间移动元素

假设我们用列表存储用户的注册信息,已知被存储的是未注册的信息,因为现在是注册的过程。现在要将这些信息移动到已注册的列表中进行存储,我们可以通过 while来实现:

# 注册信息
user_Info = ['张三','丽思','王五','周六']

# 以注册信息
users = []

while user_Info:
	uname = user_Info.pop()
	print('当前用户名:'+uname)
	users.append(uname)


print('系统正在解析以完成认证用户信息:')
#显示所以已认证用户
for user in users:
	print(user)

#显示未认证用户
print('系统正在检查未完成认证用户信息:')
for u in user_Info:
	print(u)
3.2 删除包含特定值的所有列表元素

之前我们在 操作for循环时,使用过 remove() 函数来删除过已知内容,

如果现在有一个宠物管理系统,系统中含有很多的 cat值, 要删除所有这些元素,
我们只好利用 while 循环的不断循环特性来操作了。

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

while 'cat' in pets:
	pets.remove('cat')
print(pets)

来看一下删除结果:
在这里插入图片描述


3.3 使用用户输入来填充字典
#用于存储调查信息的字典
response ={}
#设置标志
active = True
#标志为true值,进入循环
while active:
	#寻访问卷人姓名
	message = "请问,你叫什么名字?"
	#存储问卷人姓名的变量
	name = input(message)
	# 寻问当前问卷人是否喜欢
	value = input("请问"+name + ",您喜欢编程吗?")
	# 将询问结果和其姓名存储到字典
	response[name] = value
	
	#询问是否还有人愿意参与
	repeat = input('请问还有人愿意参与调查问卷吗?(yes/no)')
	# 如果不愿意 将标志的值改为 false
	if repeat == 'no':
		active = False

#遍历字典,输出其存储的信息
print('-- -- -- 本次调查问卷结果信息公布栏 -- -- --')
for key,value in response.items():
	print('参与人员:'+key+'\t个人倾向:'+value)

其实代码逻辑很简单,担心文字叙述的话描述的混乱。我将代码逐行进行了注释

下面来给大家测试一下这个调查问卷小功能的效果:

在这里插入图片描述

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

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

相关文章

mysql8.0(单表查询与多表拆线)

目录 单表查询 1、显示所有职工的基本信息。 2、查询所有职工所属部门的部门号&#xff0c;不显示重复的部门号。 3、求出所有职工的人数。 4、列出最高工资和最低工资。 5、列出职工的平均工资和总工资。 6、创建一个只有职工号、姓名和工作时间的新表&…

Vue2.0项目重构到Vue3.0流程

1.重构的流程 1-1新建项目&#xff0c;确定脚手架版本 首先呢&#xff0c;我们新建项目有两种方法 第一种&#xff1a;vue-cli : 安装并执行 npm init vuelatest 选择项目功能时&#xff1a; 除了第一项的项目名字外&#xff0c;其他可以暂时No cd 到自…

安装SQL Server2017 过程中报KB29119355失败的解决方案

SQLServer 2017脱机版下载地址&#xff1a;http://download.microsoft.com/download/6/4/A/64A05A0F-AB28-4583-BD7F-139D0495E473/SQLServer2017-x64-CHS-Dev.isoMicrosoft SQL Server Management Studio 18管理工具下载https://learn.microsoft.com/zh-cn/sql/ssms/download-…

公民自动化开发平台(CADP)列入Gartner《2022-2024 中型企业技术采用路线图》

近日&#xff0c;全球知名咨询公司 Gartner 发布《2022-2024 中型企业技术采用路线图》&#xff08;获取方式见文末&#xff09;。该路线图汇集了全球 400 多家中型企业技术领导者的集体智慧&#xff0c;共囊括 53 项技术&#xff0c;涉及多个核心基础设施领域。其中包括计算和…

Wi-Fi 7全新升级,小米蓄势待发!

目前&#xff0c;Wi-Fi 已经成为人们最常用的无线连接技术。随着智能化时代的发展&#xff0c;终端设备对 Wi-Fi 技术的速率、延迟和稳定性等都提出了更高的要求。此前&#xff0c;电气和电子工程师协会 IEEE 发布了 802.11be 草案&#xff0c;Wi-Fi联盟将其命名为 Wi-Fi 7。小…

labelme脚本使用报错:TypeError: ‘NoneType‘ object is not subscriptable

今天好不容易终于把标注做完了&#xff0c;花了我两天时间&#xff0c;终于做到最后用脚本将json文件转成png图片&#xff0c;结果出现了以下报错。 Traceback (most recent call last):File "E:/pythonconda3/Deeplabv3_plus/datasets/Json2Image.py", line 8, in …

虚拟环境的创建以及labelme的使用教程

本来打算是将这两部分分开的&#xff0c;但写完虚拟环境的创建似乎字数太少了&#xff0c;不过二者有关联&#xff0c;所以就放一起了。简单介绍一下&#xff0c;虚拟环境的创建有win11系统已经Ubuntu系统&#xff0c;labelme教程包括了下载及其使用的全部流程&#xff0c;以及…

MySQL参数优化之innodb_buffer_pool_size

innodb_buffer_pool我们俗称缓冲池&#xff0c; 缓冲池简单来说就是一块内存区域&#xff0c;通过内存的速度来弥补磁盘速度较慢对数据库性能的影响。 写入时&#xff0c;先将数据写入缓冲池种&#xff0c;再定期刷新到磁盘&#xff1b;读取时&#xff0c;将读到的页放到缓冲池…

RPC与HTTP的区别与联系(二)

目录 1.远程调用方式 2.认识RPC 3.认识Http 4.RPC与HTTP选择 5.深入分析 1.远程调用方式 无论是微服务还是分布式服务&#xff08;都是SOA&#xff0c;都是面向服务编程&#xff09;&#xff0c;都面临着服务间的远程调用。那么服务间的远程调用方式有哪些呢&#xff1f;…

【PR】时间轴窗口

【PR】时间轴窗口时间轴窗口工具按钮—视频轨道切换轨道输出切换同步锁定目标切换轨道锁定轨道对插入和覆盖进行源修补工具按钮—音频轨道静音轨道独奏轨道画外音录制时间轴窗口基础操作添加轨道查看完成视频和音频缩放轨道删除轨道添加关键帧使用软件&#xff1a;Premiere2020…

前端学习第一阶段——第五章 CSS(上)

5-1 CSS基本选择器 01-CSS层叠样式表导读 02-CSS简介 03-体验CSS语法规范 04-CSS代码风格 05-CSS选择器的作用 06-标签选择器 07-类选择器 08-使用类选择器画盒子 09-类选择器特殊使用-多类名 10-id选择器 11-通配符选择器 5-2 CSS样式 12-font-family设置字体系列 13-font-s…

Linux的sysstat(sar)的详细使用

文章目录安装使用内存和存储器页面换入换出统计信息I/O和传输速率统计信息块设备的活动统计信息网络统计信息队列长度和负载平均值统计信息内存利用率统计信息CPU利用率统计信息安装 yum install -y sysstat使用 内存和存储器页面换入换出统计信息 sar -B -f /var/log/sa/sa…

(考研湖科大教书匠计算机网络)第四章网络层-第六节1:路由选择协议概述

获取pdf&#xff1a;密码7281专栏目录首页&#xff1a;【专栏必读】考研湖科大教书匠计算机网络笔记导航 文章目录一&#xff1a;路由选择概述二&#xff1a;因特网采用的路由选择协议&#xff08;1&#xff09;特点&#xff08;2&#xff09;常见的路由选择协议三&#xff1a;…

CocoaPods使用指南

前言 对于大多数软件开发团队来说&#xff0c;依赖管理工具必不可少&#xff0c;它能针对开源和私有依赖进行安装与管理&#xff0c;从而提升开发效率&#xff0c;降低维护成本。针对不同的语言与平台&#xff0c;其依赖管理工具也各有不同&#xff0c;例如 npm 管理 Javascri…

【LeetCode】剑指 Offer 06. 从尾到头打印链表 p58 -- Java Version

题目链接&#xff1a; https://leetcode.cn/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/ 1. 题目介绍&#xff08;06. 从尾到头打印链表&#xff09; 输入一个链表的头节点&#xff0c;从尾到头反过来返回每个节点的值&#xff08;用数组返回&#xff09;。 【测试用例…

信息系统基本知识1

文章目录导论信息信息的定义:信息的特征信息分类系统定义&#xff1a;系统的组成:两种基本模式系统的特征信息系统定义信息系统的概念用户角度系统角度技术角度企业管理角度管理信息系统广义理解狭义理解信息系统工程定义信息系统的结构信息系统的功能信息系统的分类IS中人的作…

【并发编程】【3】Java线程 创建线程与线程运行

并发编程 3.Java线程 本章内容 创建和运行线程 查看线程 线程 API 线程状态 3.1 创建和运行线程 方法一&#xff0c;直接使用 Thread // 创建线程对象 Thread t new Thread() {public void run() {// 要执行的任务} }; // 启动线程 t.start();例如&#xff1a; // 构…

程序员必备的软技能-金字塔原理拆解

前言 日常工作中&#xff0c;常常因为思维、表达方式不对产生不想要的结果&#xff1a; 写了一个小时的周报&#xff0c;领导却不满意&#xff1f;跟团队讲了半天自己的想法&#xff0c;可别人就是没理解&#xff1f;看了很多知识、信息&#xff0c;却一点也没记住&#xff1…

【分享】如何通过集简云将ChatGPT人工智能接入到您的抖音中?

ChatGPT是一款非常强大的人工智能产品&#xff0c;可以有创造性的回复和创作文字&#xff0c;图片&#xff0c;适用于很多办公场景。这篇文章将介绍如何将ChatGPT接入到我们的抖音中。 在集简云中的ChatGPT应用 目前集简云提供了两个ChatGPT应用: OpenAI(ChatGPT&#xff09;…

OpenCV实战(11)——形态学变换详解

OpenCV实战&#xff08;11&#xff09;——形态学变换详解0. 前言1. 腐蚀和膨胀运算1.1 腐蚀和膨胀基础1.2 使用形态学滤波器执行图像腐蚀和膨胀运算2. 开运算和闭运算2.1 使用形态学滤波器执行图像开运算和闭运算3. 形态学变换应用3.1 使用形态学滤波器检测边缘3.2 使用形态学…