【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':
        break
    print(message)

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

在这里插入图片描述

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

# 初始化标志变量
continue_loop = True

while 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 = False

print("循环结束")

这段 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':
       break

print("循环结束")

在这里插入图片描述

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

循环中使用continue关键字

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

current_number = 0
while current_number <10:
    current_number+= 1
    if current_number % 2 == 0:
        continue
    print(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 = True

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何在前端测试中,在F12中加入token

不止是token&#xff0c;cookie中其他的数据也都可以这样 首先打开F12&#xff0c;然后找到Application或者应用程序 然后找到cookie里面双击这里&#xff0c;输入token或者其他数据就可以了&#xff0c;后面输值。

高性能日志系统

目录 设计思路 架构设计 设计模式应用 单例模式 工厂模式 建造者模式 代理模式 异步处理设计 异步日志器使用原因 异步日志器设计思路 异步日志器实现的核心模块说明 性能优化以及问题解决 测试结果 双缓冲区机制设计 设计思路及其架构 生产消费模式与双缓冲区结…

C++ wxWidgets图形界面开发用什么IDE最好?

在主流免费的IDE工具中&#xff0c;我们可以想到的支持cmake项目的工具就只有QtCreator&#xff0c;VisualStudio&#xff0c;VSCode这三个。其中QtCreator和VSCode支持WIndows&#xff0c;Mac&#xff0c;WIndows三大主流平台。但是VSCode在Ubuntu等系统下的支持并没有在WIndo…

【vue讲解:ref属性、动态组件、插槽、vue-cli创建项目、vue项目目录介绍、vue项目开发规范、es6导入导出语法】

0 ref属性&#xff08;组件间通信&#xff09; # 1 ref属性放在普通标签上<input type"text" v-model"name" ref"myinput">通过 this.$refs[myinput] 拿到的是 原生dom对象操作dom对象&#xff1a;改值&#xff0c;换属性。。。# 2 ref属…

Leetcode JAVA刷刷站(38)外观数列

一、题目概述 二、思路方向 为了解决这个问题&#xff0c;我们可以编写一个Java函数countAndSay&#xff0c;该函数接受一个整数n作为输入&#xff0c;并返回外观数列的第n个元素。这个函数将基于递归公式来构建数列&#xff0c;其中countAndSay(1) "1"&#xff0c;…

pycharm windows/mac 指定多版本python

一、背景 工作中经常会使用不同版本的包&#xff0c;如同时需要tf2和tf1&#xff0c;比较新的tf2需要更高的python版本才能安装&#xff0c;而像tf1.5 需要低版本的python 才能安装&#xff08;如 python3.6&#xff09;,所以需要同时安装多个版本。 二、安装多版本python py…

网络安全之XSS基础

从 XSS Payload 学习浏览器解码 xss payload 1.<a href"%6a%61%76%61%73%63%72%69%70%74:%61%6c%65%72%74%28%31%29">1</a> 2.<a href"&#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;:…

SpringBoot+Vue在线商城(电子商城)系统-附源码与配套论文

摘 要 随着互联网技术的发展和普及&#xff0c;电子商务在全球范围内得到了迅猛的发展&#xff0c;已经成为了一种重要的商业模式和生活方式。电子商城是电子商务的重要组成部分&#xff0c;是一个基于互联网的商业模式和交易平台&#xff0c;通过网络进行产品和服务的销售。…

【题目/训练】:双指针

引言 我们已经在这篇博客【算法/学习】双指针-CSDN博客里面讲了双指针、二分等的相关知识。 现在我们来做一些训练吧 经典例题 1. 移动零 思路&#xff1a; 使用 0 当做这个中间点&#xff0c;把不等于 0(注意题目没说不能有负数)的放到中间点的左边&#xff0c;等于 0 的…

Unity项目优化记录

背景&#xff1a;测试反馈项目组游戏存在内存泄露&#xff0c;来找到中台这边协调排查。好家伙&#xff0c;跑了两次看了内存快照&#xff0c;再看资源组织和管理方式&#xff0c;存在的问题确实比较多。 1、修复内存泄露&#xff1a;结算界面由于资源引用丢失导致整个面板不会…

景联文科技高质量文本标注:驱动自然语言处理技术的发展与应用

文本标注是自然语言处理&#xff08;NLP&#xff09;领域的一个重要环节&#xff0c;是指在文本数据上添加额外的信息或标记的过程&#xff0c;目的是为了让计算机能够理解和处理这些文本数据。 通过文本标注&#xff0c;可以为文本中的各个部分提供具体的含义和上下文信息&…

基于vue全家桶的pc端仿淘宝系统_kebgy基于vue全家桶的pc端仿淘宝系统_kebgy--论文

TOC springboot478基于vue全家桶的pc端仿淘宝系统_kebgy基于vue全家桶的pc端仿淘宝系统_kebgy--论文 绪 论 1.1开发背景 改革开放以来&#xff0c;中国社会经济体系复苏&#xff0c;人们生活水平稳步提升&#xff0c;中国社会已全面步入小康社会。同时也在逐渐转型&#xf…

这个是git使用的合集

如果遇到了关于git和github的bug就会写这里 2024/8/16 github一直没有打卡和上传代码是因为感觉除了做项目的情况&#xff0c;普通的学习和普通的笔记没必要记在github里&#xff1b;如果是笔记类的东西为什么不记在csdn上呢&#xff1f;如果是算法题算法网站上回有记录啊&am…

Cacti SQL注入漏洞分析(CVE-2023-51448)

Cacti 为全球用户提供强大且可扩展的运营监控和故障管理框架。它还是一个完整的网络绘图解决方案&#xff0c;旨在利用RRDTool的数据存储和绘图功能。Cacti 包括一个完全分布式和容错的数据收集框架、用于设备、图表和树的高级基于模板的自动化功能、多种数据采集方法、通过插件…

Vue2 和 Vue3中EventBus使用差异

目录 前言一、EventBus 和 mitt 的对比二、Vue 2 中的 EventBus 使用实例2.1 创建 EventBus2.2 在组件中使用 EventBus2.2.1 组件 A - 发送事件2.2.2 组件 B - 监听事件 2.3 注意事项 三、Vue 3 中的 mitt 使用实例3.1 安装 mitt3.2 创建 mitt 实例3.3 在组件中使用 mitt3.3.1 …

DHU OJ 二维数组

思路及代码 #include<iostream> using namespace std; int main(){ //input 多组 //input M,N int 1< <20 //input M 行 N 列 数据 //initialize listint M, N;while (cin >> M >> N){int list[M][N];for (int i 0; i < M-1; i){for (int j 0; j…

Python编写Word文档

目录 0. 安装依赖 1. 创建word文档 2. 添加标题、居中、字体16大小 3. 添加标题一 4. 添加一段话并设置字体颜色 封装函数 5. 换页 6. 插入表格 0. 安装依赖 python-docx1.1.2 1. 创建word文档 from docx import Documentdoc Document() 2. 添加标题、居中、字体1…

计算机网络面试题汇总

文章目录 计算机网络基础计算机网络体系结构(网络分层模型)OSI 七层模型是什么?每一层的作用是什么?TCP/IP 四层模型是什么?每一层的作用是什么?五层体系结构以及对应的协议为什么网络要分层,分层的好处?常见网络协议有哪些,每一层常见协议有哪些?应用层有哪些常见的协…

24/8/18算法笔记 目标导向强化学习

目标导向强化学习&#xff08;Goal-Oriented Reinforcement Learning&#xff0c;简称GORL&#xff09;是强化学习的一个分支&#xff0c;它关注于智能体如何通过与环境的交互来实现特定的目标或任务。与传统的强化学习不同&#xff0c;目标导向强化学习更加关注目标的设定和达…

一元二次方程系数

前言&#xff1a;刚刚开始写的时候也想到了先求出两个的解&#xff0c;但是没想到最后正负数系数怎么处理 且我才知道求解gcd是可以负数和正数的 #include<bits/stdc.h> using namespace std;#define int long long int t; int a,b,c;void solve(){cin >> a >&…