在 Python 中从键盘读取用户输入

文章目录
- 如何在 Python 中从键盘读取用户输入
- input 函数
- 使用input读取键盘输入
- 使用input读取特定类型的数据
- 处理错误
- 从用户输入中读取多个值
- getpass 模块
- 使用 PyInputPlus 自动执行用户输入评估
- 总结
如何在 Python 中从键盘读取用户输入
原文《How to Read User Input From the Keyboard in Python》
input 函数
使用input读取键盘输入
input是一个内置函数,将从输入中读取一行,并返回一个字符串(除了末尾的换行符)。
例1: 使用Input读取用户姓名
name = input("你的名字:")
print(f"你好,{name}")
使用input读取特定类型的数据
input默认返回字符串,如果需要读取其他类型的数据,需要使用类型转换。
例2:读取用户年龄
age = input("你的年龄:")
print(type(age)) # <class 'str'>age = int(input("你的年龄:"))
print(type(age)) # <class 'int'>
处理错误
如果用户输入的不是数字,int()将会抛出ValueError异常。
>>> age = int(input("你的年龄:"))
你的年龄:三十
Traceback (most recent call last):...
ValueError: invalid literal for int() with base 10: '三十'
使用try-except处理错误可以使程序更健壮。
例3:用try-except处理用户输入错误
while True:try:age = int(input("你的年龄:"))except ValueError:print("请使用数字输入你的年龄,例如24")else:breakprint(f"明年, 你将 {age + 1} 岁。")
从用户输入中读取多个值
有时用户需要输入多个值,可以使用split()方法将输入分割成多个值。
例4:从用户输入中读取多个值
user_colors = input("输入三种颜色,用,隔开: ")
# orange, purple, green
colors = [s.strip() for s in user_colors.split(",")]print(f"颜色的列表为: {colors}")
getpass 模块
有时,程序需要隐藏用户的输入。例如,密码、API 密钥甚至电子邮件地址等输入。可用标准库模块getpass实现。
下面是一个验证用户邮箱的例子。
例5:使用getpass隐藏用户输入
import os
import getpassdef verify_email(email):allowed_emails = [email.strip() for email in os.getenv("ALLOWED_EMAILS").split(",")]return email in allowed_emailsdef main():email = getpass.getpass("输入邮箱地址:")if verify_email(email):print("有效的邮箱,通过。")else:print("无效的邮箱,拒绝。")if __name__ == "__main__":main()
我们使用os.getenv获取环境变量ALLOWED_EMAILS,并使用getpass.getpass隐藏用户输入。
为了设置环境变量,Windows用户可以在命令行或powershell中使用$env:命令。powershell设置环境变量-知乎
设置当前会话的环境变量:
$env:ALLOWED_EMAILS = 'info@example.com'
linux用户可以使用export命令。
export ALLOWED_EMAILS=info@example.com
然后执行程序,输入邮箱地址,如果邮箱地址在环境变量中,程序将返回Email is valid. You can proceed.否则返回Incorrect email. Access denied.
使用 PyInputPlus 自动执行用户输入评估
PyInputPlus包基于验证和重新提示用户输入而构建并增强 input() 。
这是一个第三方包,可用pip安装。
python -m pip install pyinputplus
例6:使用PyInputPlus读取用户输入
import pyinputplus as pyipage = pyip.inputInt(prompt="你的年龄:", min=0, max=120)
print(f"你的年龄是 {age}")
注:这个包最后更新时间是2020年10月11日。
例7:一个简单的交易程序
import pyinputplus as pyipaccount_balance = 1000print("欢迎来到 REALBank")
while True:print(f"\n你的余额为: ¥{account_balance}")transaction_type = pyip.inputChoice(["存钱", "取钱", "退出"])if transaction_type == "退出":breakelif transaction_type == "存钱":deposit_amount = pyip.inputInt(prompt="输入金额 (最大 ¥10,000): ¥", min=0, max=10000)account_balance += deposit_amountprint(f"存入 ¥{deposit_amount}.")elif transaction_type == "取钱":withdrawal_amount = pyip.inputInt(prompt="输入金额: ¥", min=0, max=account_balance)account_balance -= withdrawal_amountprint(f"取出 ¥{withdrawal_amount}.")print("\n感谢选择 REALBank。再见!")
总结
- 使用
input函数读取用户输入 - 使用
getpass模块隐藏用户输入 - 使用
PyInputPlus包增强用户输入
相关文章:
在 Python 中从键盘读取用户输入
文章目录 如何在 Python 中从键盘读取用户输入input 函数使用input读取键盘输入使用input读取特定类型的数据处理错误从用户输入中读取多个值 getpass 模块使用 PyInputPlus 自动执行用户输入评估总结 如何在 Python 中从键盘读取用户输入 原文《How to Read User Input From t…...
linux设置systemctl启动
linux设置nginx systemctl启动 生成nginx.pid文件 #验证nginx的配置,并生成nginx.pid文件 /usr/local/nginx/sbin/nginx -t #pid文件目录在 /usr/local/nginx/run/nginx.pid 设置systemctl启动nginx #添加之前需要先关闭启动状态的nginx,让nginx是未…...
蓝桥杯历年真题省赛 Java b组 2016年 第七届 煤球数目
一、题目 煤球数目. 有一堆煤球,堆成三角棱锥形。具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形&#x…...
NTFS安全权限
NTFS是新技术文件系统(New Technology File System)的缩写,是一种用于Windows操作系统的文件系统。NTFS提供了高级的功能和性能,包括文件和目录的权限控制、加密、压缩以及日志等。它被广泛应用于Windows NT、Windows 2000、Windo…...
rt-thread组件之audio组件(结合mp3player包使用)
前言 继上一篇RT-Thread组件之Audio框架i2s驱动的编写的编写,应用层使用rt-thread软件包里面的wavplayer组件以及 rt-thread组件之audio组件(结合wavplayer包使用)的文章本篇使用的是 mp3player软件包,与wavplayer设计框架基本上是一样的,只…...
SaulLM-7B: A pioneering Large Language Model for Law
SaulLM-7B: A pioneering Large Language Model for Law 相关链接:arxiv 关键字:Large Language Model、Legal Domain、SaulLM-7B、Instructional Fine-tuning、Legal Corpora 摘要 本文中,我们介绍了SaulLM-7B,这是为法律领域量…...
概要了解postman、jmeter 、loadRunner
postman还蛮好理解的,后续复习的话着重学习关联接口测试即可,感觉只要用几次就会记住: 1 从接口的响应结果当中提取需要的数据 2 设置成环境变量/全局变量(json value check 、set environment para 3写入到下一个接口的请求数据中…...
3642. 最大公约数和最小公倍数 考研上机真题
输入两个正整数 m和 n,求其最大公约数和最小公倍数。 输入格式 一行,两个整数 m和 n。 输出格式 一行,输出两个数的最大公约数和最小公倍数。 数据范围 1≤n,m≤10000 输入样例: 5 7输出样例: 1 35 #include…...
Java客户端调用elasticsearch进行深度分页查询 (search_after)
Java客户端调用elasticsearch进行深度分页查询 (search_after) 一. 代码二. 测试结果 前言 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。 作者:神的孩子都在歌唱 具体的Search_after解…...
C#使用自定义的泛型节点类 Node<T>实现二叉树类BinaryTree<T>及其方法
目录 一、涉及到的知识点 1.Comparer.Default 属性 2.实现二叉树类BinaryTree步骤 (1)先设计一个泛型节点类 (2)再设计一个泛型的二叉树类 (3)最后设计Main方法 二、 使用泛型节点类 Node实现二叉树…...
美团2025春招第一次笔试题
第四题 题目描述 塔子哥拿到了一个大小为的数组,她希望删除一个区间后,使得剩余所有元素的乘积未尾至少有k个0。塔子哥想知道,一共有多少种不同的删除方案? 输入描述 第一行输入两个正整数 n,k 第二行输入n个正整数 a_i,代表…...
用游戏面试应聘者的方法
用游戏面试应聘者的方法 例如使用俄罗斯方块来面试,如果对方对这个游戏没有兴趣,或者是游戏结果不够好, 那么可以肯定的是,这个人做不好文物修复的工作。 象棋或者是围棋之类的棋类下得好的人,一般来说,做…...
C#,老鼠迷宫问题的回溯法求解(Rat in a Maze)算法与源代码
1 老鼠迷宫问题 迷宫中的老鼠,作为另一个可以使用回溯解决的示例问题。 迷宫以块的NN二进制矩阵给出,其中源块是最左上方的块,即迷宫[0][0],目标块是最右下方的块,即迷宫[N-1][N-1]。老鼠从源头开始,必须到达目的地。老鼠只能朝两个方向移动:向前和向下。 在迷宫矩阵…...
c语言: 输出几个数的和
输出几个数的和 任务描述 编程输入最少1个最多不超过4个整数,输出他们的和。 输入样例1:5 6 7 8 输出样例1:26 输入样例2:1 5 输出样例2:6 输入样例3:1 5 4 输出样例3:10 输入样例4ÿ…...
liteIDE 解决go root报错 go: cannot find GOROOT directory: c:\go
liteIDE环境配置 我使用的liteIDE为 x36 5.9.5版本 。在查看–>选项 中可以看到 LiteEnv,双击LiteEnv ,在右侧选择对应系统的env文件,我的是win64系统,所以文件名为win64.env 再双击 win64.env ,关闭当前窗口&…...
力扣_动态规划1—买卖股票的最佳时机
题目 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 方法—动态…...
苍穹外卖问题记录(持续更新)
Day01_3.2.4前后端联调 1. 前端无法登录 (1)确保nginx服务器已经启动 (2)查看自己数据库的用户名和密码是否和老师的一样,不一样的话需要在application-dev.yml文件中把老师的用户名密码修改成自己的 老师的用户名…...
结合大象机器人六轴协作机械臂myCobot 280 ,解决特定的自动化任务和挑战!(下)
Limo Pro 小车建图导航 引言 前景提要:我们在上文介绍了使用LIMO cobot 实现一个能够执行复杂任务的复合机器人系统的应用场景的项目,从以下三个方面:概念设计、系统架构以及关键组件。 本文主要深入项目内核的主要部分,同样也主要…...
加速 Webpack 构建:提升效率的秘诀
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…...
Qt自定义标题栏的多屏适配
标题栏自定义 参考博客 : https://blog.csdn.net/goforwardtostep/article/details/53494800 多屏适配 MyTitleBar类抽象定义了自定义标题栏,使用起来相对方便。但是在多屏情况下,窗口初次显示只能在主屏幕上,如果拖到其他屏幕…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...
基于鸿蒙(HarmonyOS5)的打车小程序
1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...
