【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循环和字典。

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

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

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

相关文章

Java | Leetcode Java题解之第347题前K个高频元素

题目&#xff1a; 题解&#xff1a; class Solution {public int[] topKFrequent(int[] nums, int k) {Map<Integer, Integer> occurrences new HashMap<Integer, Integer>();for (int num : nums) {occurrences.put(num, occurrences.getOrDefault(num, 0) 1);…

【机器学习】(基础篇六) —— 数据集的划分和过拟合问题

数据集的划分 训练集和测试集 在机器学习中&#xff0c;数据集通常会被划分为训练集&#xff08;Training Set&#xff09;和测试集&#xff08;Test Set&#xff09;&#xff0c;有时还会包括一个验证集&#xff08;Validation Set&#xff09;。这样的划分是为了能够更好地…

SQL 数据库设计、事务、视图 <13>

一、数据库设计 1.多表之间的关系 1&#xff09; 一对一&#xff08;了解&#xff09; 如&#xff1a;人和身份证 分析&#xff1a;一个人只有一个身份证&#xff0c;一个身份证只能对应一个人 2&#xff09;一对多&#xff08;多对一&#xff09; 如&#xff1a;部门和员…

Flink消费Kafka数据积压排查解决

0、背景 有个Flink任务每天不定时会出现数据积压&#xff0c;无论是白天还是数据量很少的夜里&#xff0c;且积压的数据量会越来越多&#xff0c;得不到缓解&#xff0c;只能每日在积压告警后重启&#xff0c;重启之后消费能力一点毛病没有&#xff0c;积压迅速缓解&#xff0…

立仪光谱共焦传感器行业应用|薄膜高度差扫描

01&#xff5c;检测需求&#xff1a;扫描薄膜圆圈的高度差 02&#xff5c;检测方式 客户要求扫描薄膜圆圈的高度差&#xff0c;根据观察样品我们选择立仪科技D40A30镜头搭配H系列控制器进行测量 03&#xff5c;光谱共焦测量结果 薄膜圆圈的高度差轮廓 04&#xff5c;光谱共焦…

在CodeBlocks搭建SDL2工程OLED液晶模拟器虚拟OLED单色液晶(128x64)

在CodeBlocks搭建SDL2工程OLED液晶模拟器虚拟OLED单色液晶 例程说明源码下载目录工程配置一、SDL2的初始化和退出二、OLED画点和读点三、更新OLDE的GRAM四、清屏和清某区域五、点阵字库六、显示字符串七、显示中文字符八、显示图片九、测试代码十、主函数十一、运行结果 例程说…

05 serv00安装typecho

下载 ‍ cd domain/xxx.serv00.net/# 下载typecho git clone https://github.com/typecho/typecho.git# 当前有两个目录 typecho/ 和 public_html/ ls# 替换html rm -rf public_html/ mv typecho public_html‍ 安装 浏览器访问你的网站 xxx.serv0.net&#xff0c;看见 type…

8月15日笔记

masscan安装使用 首先需要有c编译器环境。查看是否有c编译器环境&#xff1a; gcc -v如果系统中已经安装了 GCC&#xff0c;这个命令将输出 GCC 的版本信息。如果未安装&#xff0c;你会看到类似于 “command not found” 的错误消息。 如果没有下载&#xff0c;使用如下命令…

万维网与HTTP协议:基础知识简明指南

引言 在当今的数字时代&#xff0c;了解万维网&#xff08;World Wide Web, WWW&#xff09;和HTTP协议&#xff08;Hyper Text Transfer Protocol&#xff09;是至关重要的。本文将为基础小白们简明扼要地介绍万维网及其核心协议HTTP&#xff0c;并通过简单的例子和清晰的段落…

C语言内存操作函数

目录 一. C语言内存操作函数 1. memcpy的使用和模拟实现 2. memmove函数 3. memset函数 4. memcmp函数 一. C语言内存操作函数 随着知识的不断积累&#xff0c;我们所想要实现的目标程序就会更加复杂&#xff0c;今天我们来学习一个新的知识叫做C语言内存操作函数&#x…

基于Python的火车票售票系统/基于django的火车购票系统

摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&…

面试经典算法150题系列-最长公共前缀

最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 ""。 示例 1&#xff1a; 输入&#xff1a;strs ["flower","flow","flight"] 输出&#xff1a;"fl"示例 2&…

HTML及CSS面试题4

1、BFC 1.1、介绍BFC及其应用 补充——触发BFC的方式&#xff0c;常见的有&#xff1a; 设置浮动overflow设置为&#xff1a;auto、scroll、hiddenpositon设置为&#xff1a;absolute、fixed 介绍&#xff1a; ○ 所谓BFC&#xff0c;指的是&#xff1a;一个独立的布局环境&am…

集合的知识点

一、集合的简介 1.1 什么是集合 集合(Collection)&#xff0c;也是一个数据容器&#xff0c;类似于数组&#xff0c;但是和数组是不一样的。集合是一个可变的容器&#xff0c;可以随时向集合集合中添加元素&#xff0c;也可以随时从集合中删除元素。另外&#xff0c;集合还提…

鸿蒙(API 12 Beta3版)【录像流二次处理(C/C++)】媒体相机开发指导

通过ImageReceiver创建录像输出&#xff0c;获取录像流实时数据&#xff0c;以供后续进行图像二次处理&#xff0c;比如应用可以对其添加滤镜算法等。 开发步骤 导入NDK接口&#xff0c;接口中提供了相机相关的属性和方法&#xff0c;导入方法如下。 // 导入NDK接口头文件#in…

使用python实现3D聚类图

实验记录&#xff0c;在做XX得分预测的实验中&#xff0c;做了一个基于Python的3D聚类图&#xff0c;水平有限&#xff0c;仅供参考。 一、以实现三个类别聚类为例 代码&#xff1a; import pandas as pd import numpy as np from sklearn.decomposition import PCA from sk…

开源版最新LoveCardsV2表白墙源码下载

源码亮点 模板系统&#xff0c;给你无限可能 卡片不限字数&#xff0c;支持多图片上传 支持评论&#xff0c;点赞&#xff0c;让互动性拉满 管理后台可添加多个管理员 卡片一键分享至多平台 卡片浏览次数统计 发行版开箱即用 部署教程 1. 环境&#xff08;参考开发环境&…

XSS- DOMclobbering与svg深度利用

目录 源码展示 解法一&#xff1a;绕过过滤-DOM clobbering 什么是DOM clobbering DOM clobbering原理 全局变量自动创建 属性名冲突 影响脚本执行 逐过程分析 源码展示 <script>const data decodeURIComponent(location.hash.substr(1));;const root documen…

图像处理之:Video Processing Subsystem(三)

免责声明&#xff1a; 本文所提供的信息和内容仅供参考。作者对本文内容的准确性、完整性、及时性或适用性不作任何明示或暗示的保证。在任何情况下&#xff0c;作者不对因使用本文内容而导致的任何直接或间接损失承担责任&#xff0c;包括但不限于数据丢失、业务中断或其他经济…

【硬件模块】震动传感器模块

震动传感器模块实物图 DO&#xff1a;数字信号量输出&#xff0c;接单片机管脚&#xff1b; AO&#xff1a;模拟输出&#xff0c;无效&#xff0c;一般不接。 无震动&#xff0c;DO输出高电平&#xff0c;信号指示灯灭&#xff1b; 有震动&#xff0c;DO输出低电平&#xff0c;…