在 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类抽象定义了自定义标题栏,使用起来相对方便。但是在多屏情况下,窗口初次显示只能在主屏幕上,如果拖到其他屏幕…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...
