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

news2024/9/20 16:54:41

文章目录

  • 前言
  • 一、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循环和字典。

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

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

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

相关文章

如何查看Squid的DNS缓存

使用squidclient mgr:ipcache命令查看Squid的DNS缓存记录 如果squid端口不是3128, 需要指定端口号, squidclient -p {port} mgr:ipcache # squidclient mgr:ipcache ... IP Cache Statistics: ... IP Cache Contents:Hostname Flg lstref TTL N(b)…

【排序算法】八大排序(上)(c语言实现)(附源码)

&#x1f31f;&#x1f31f;作者主页&#xff1a;ephemerals__ &#x1f31f;&#x1f31f;所属专栏&#xff1a;算法 目录 前言 写一串测试数据 交换两元素的函数 一、冒泡排序 二、选择排序 三、插入排序 四、希尔排序 程序全部代码 总结 前言 排序算法是计算机科…

【pwnable.kr】0x01-fd Writeup

题目描述 解法 Ubuntu连接靶机&#xff08;连不通的可以试一下proxychains&#xff09; ssh fdpwnable.kr -p2222scp命令拷贝下fd源码文件 scp -P2222 fdpwnable.kr:fd.c .查看源码 #include <stdio.h> #include <stdlib.h> #include <string.h> char bu…

解决k8s分布式集群,子节点加入到主节点失败的问题

1.问题情况 Master主节点在 使用 kubeadm init 成功进行初始化后&#xff0c;如下所示 Your Kubernetes control-plane has initialized successfully!To start using your cluster, you need to run the following as a regular user:mkdir -p $HOME/.kubesudo cp -i /etc/k…

spring全面详解-最全最详细的spring基本认识和入门使用

文章目录 Springspring概述1 Spring定义2 Spring核心3 Spring Framework的特点 入门案例1 环境要求2 构建工程2.1 构建子工程first-spring2.2 入门案例2.3 对象存储 IoC容器1 控制反转IoC2 依赖注入DI3 IoC容器实现4 基于XML管理bean4.1 环境准备4.2 获取bean方式4.3 基于sette…

【微信小程序】自定义组件 - behaviors

1. 什么是 behaviors 2. behaviors 的工作方式 3. 创建 behavior 调用 Behavior(Object object) 方法即可创建一个共享的 behavior 实例对象&#xff0c;供所有的组件使用&#xff1a; 4. 导入并使用 behavior 5. behavior 中所有可用的节点 6. 同名字段的覆盖和组合规则* 关…

C++学习笔记----4、用C++进行程序设计(一)---- 什么是面向对象的程序设计

也许你看到这个题目的时候&#xff0c;就觉得这篇博文不用看了&#xff0c;难道这就是题目劝退了观众。我看到过一些程序&#xff0c;是由面向过程的传统程序修改过来了&#xff0c;只是将原来的函数变成了类的成员函数&#xff0c;其他几乎没有什么变化&#xff0c;可以说是换…

使用一致性哈希解决哈希分片负载均衡的扩展性问题

声明&#xff1a;本文的图全部源于&#xff1a;小林coding 上来咱先说&#xff0c;一致性哈希是应对分布式系统的算法 假设有一个负载均衡问题&#xff0c;也就是大批流量来请求&#xff0c;那怎么分配这些流量&#xff1f; 随机&#xff1f;还是挨个轮询&#xff1f; 这都…

文心快码帮你解大厂面试题:在给定两个不定长的单向链表,如何实现两个链表的加和?

【大厂面试真题】系列&#xff0c;带你攻克大厂面试真题&#xff0c;秒变offer收割机&#xff01; ❓今日问题&#xff1a;Java G1 GC中&#xff0c;region是什么意思&#xff1f;有哪些不同的region类型&#xff1f; ❤️一起看看文心快码Baidu Comate给出的答案吧&#xff01…

java 重新认识重载与重写

一、概念 1、重载&#xff08;Overloading&#xff09;: 是指在同一个类中&#xff0c;可以有多个同名方法&#xff0c;但这些方法的参数类型、参数个数、参数顺序至少有一个不同。返回类型可以相同也可以不同。每个重载的方法都需要有一个独特的参数类型列表。 2、 重写&#…

35岁被裁员,难道是程序员的结局吗?

声明&#xff1a;此篇为 ai123.cn 原创文章&#xff0c;转载请标明出处链接&#xff1a;https://ai123.cn/2179.html 作为一名35岁的Java工程师&#xff0c;技术更新快得就像坐火箭一样&#xff0c;咱们的技术可能一不留神就落伍了。再加上年纪大了&#xff0c;体力可能跟不上挑…

AMD加大资金布局,全力追赶英伟达

AMD正在加紧布局&#xff0c;以缩小与AI芯片领域领军者英伟达的差距。随着AI技术的飞速发展&#xff0c;AMD近日宣布了一笔重磅收购计划&#xff0c;这家芯片巨头正加速进入AI硬件市场&#xff0c;希望通过此次收购进一步扩大市场份额。 49亿美元收购ZT Systems 本周&#xff…

CUDA-MODE课程笔记 第7课: Quantization Cuda vs Triton

我的课程笔记&#xff0c;欢迎关注&#xff1a;https://github.com/BBuf/how-to-optim-algorithm-in-cuda/tree/master/cuda-mode CUDA-MODE课程笔记 第7课: Quantization Cuda vs Triton 适配课件详细解读 作者课件可以在这里找到&#xff1a;https://github.com/cuda-mode/l…

前端宝典十:webpack性能优化最佳实践

Webpack 内置了很多功能。 通常你可用如下经验去判断如何配置 Webpack&#xff1a; 想让源文件加入到构建流程中去被 Webpack 控制&#xff0c;配置 entry&#xff1b;想自定义输出文件的位置和名称&#xff0c;配置 output&#xff1b;想自定义寻找依赖模块时的策略&#xff…

上门预约O2O系统源码开发

随着互联网技术的飞速发展&#xff0c;O2O&#xff08;Online To Offline&#xff09;模式已成为连接线上与线下的重要桥梁&#xff0c;尤其在同城服务领域展现出了巨大的潜力。上门预约服务作为O2O模式的一种典型应用&#xff0c;正逐渐改变着人们的生活方式。 一、O2O模式概述…

Spring Boot发送邮件带附件功能怎么实现?

SpringBoot发送邮件带附件的步骤&#xff1f;如何优化Spring性能&#xff1f; 发送电子邮件是一个常见的需求&#xff0c;而随着业务需求的增加&#xff0c;发送带有附件的邮件变得尤为重要。AokSend将探讨如何在Spring Boot中实现发送邮件并附加文件的功能。 Spring Boot发送…

使用SSMS连接和查询 SQL Server 实例

简介 SQL Server Management Studio 是用于管理SQL Server基础架构的集成环境。Management Studio提供用于配置、监视和管理SQL Server实例的工具。 此外&#xff0c;它还提供了用于部署、监视和升级数据层组件(如应用程序使用的数据库和数据仓库)的工具以生成查询和脚本。 官方…

Win 11用户全面中招,微软强制更新致性能下降45%

一觉醒来&#xff0c;微软又准备给大伙儿来波友情关怀送温暖了。 外媒爆料&#xff0c;在接下来的 Win 11 24H2 版本中&#xff0c;微软将默认自动为用户开启 BitLocker 磁盘加密…… 来源&#xff1a;computerworld 资深搞机佬都知道&#xff0c;微软对于用户数据保护一直有…

【Java】对象与toString()方法

1.前言 了解toString之前&#xff0c;要先明白Object类是什么&#xff0c;Object是所有对象的父类。在Object类当中含有toString()方法&#xff0c;因此所有的对象也都包含有一个toString()方法。 2.toString 2.1 方法调用 toString()方法主要的作用&#xff0c;是对类与对象的…

为IntelliJ IDEA安装插件

安装插件 插件是开发工具的扩展程序&#xff0c;通常由第三方提供&#xff0c;当安装了插件后&#xff0c;原开发工作的菜单、按钮等开发环境可能会发生变化&#xff0c;例如出现了新的菜单项&#xff0c;或出现了新的按钮&#xff0c;甚至一些全新的编码方式&#xff0c;通常…