当前位置: 首页 > news >正文

在 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的配置&#xff0c;并生成nginx.pid文件 /usr/local/nginx/sbin/nginx -t #pid文件目录在 /usr/local/nginx/run/nginx.pid 设置systemctl启动nginx #添加之前需要先关闭启动状态的nginx&#xff0c;让nginx是未…...

蓝桥杯历年真题省赛 Java b组 2016年 第七届 煤球数目

一、题目 煤球数目. 有一堆煤球&#xff0c;堆成三角棱锥形。具体&#xff1a; 第一层放1个&#xff0c; 第二层3个&#xff08;排列成三角形&#xff09;&#xff0c; 第三层6个&#xff08;排列成三角形&#xff09;&#xff0c; 第四层10个&#xff08;排列成三角形&#x…...

NTFS安全权限

NTFS是新技术文件系统&#xff08;New Technology File System&#xff09;的缩写&#xff0c;是一种用于Windows操作系统的文件系统。NTFS提供了高级的功能和性能&#xff0c;包括文件和目录的权限控制、加密、压缩以及日志等。它被广泛应用于Windows NT、Windows 2000、Windo…...

rt-thread组件之audio组件(结合mp3player包使用)

前言 继上一篇RT-Thread组件之Audio框架i2s驱动的编写的编写&#xff0c;应用层使用rt-thread软件包里面的wavplayer组件以及 rt-thread组件之audio组件(结合wavplayer包使用)的文章本篇使用的是 mp3player软件包&#xff0c;与wavplayer设计框架基本上是一样的&#xff0c;只…...

SaulLM-7B: A pioneering Large Language Model for Law

SaulLM-7B: A pioneering Large Language Model for Law 相关链接&#xff1a;arxiv 关键字&#xff1a;Large Language Model、Legal Domain、SaulLM-7B、Instructional Fine-tuning、Legal Corpora 摘要 本文中&#xff0c;我们介绍了SaulLM-7B&#xff0c;这是为法律领域量…...

概要了解postman、jmeter 、loadRunner

postman还蛮好理解的&#xff0c;后续复习的话着重学习关联接口测试即可&#xff0c;感觉只要用几次就会记住&#xff1a; 1 从接口的响应结果当中提取需要的数据 2 设置成环境变量/全局变量&#xff08;json value check 、set environment para 3写入到下一个接口的请求数据中…...

3642. 最大公约数和最小公倍数 考研上机真题

输入两个正整数 m和 n&#xff0c;求其最大公约数和最小公倍数。 输入格式 一行&#xff0c;两个整数 m和 n。 输出格式 一行&#xff0c;输出两个数的最大公约数和最小公倍数。 数据范围 1≤n,m≤10000 输入样例&#xff1a; 5 7输出样例&#xff1a; 1 35 #include…...

Java客户端调用elasticsearch进行深度分页查询 (search_after)

Java客户端调用elasticsearch进行深度分页查询 &#xff08;search_after&#xff09; 一. 代码二. 测试结果 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 具体的Search_after解…...

C#使用自定义的泛型节点类 Node<T>实现二叉树类BinaryTree<T>及其方法

目录 一、涉及到的知识点 1.Comparer.Default 属性 2.实现二叉树类BinaryTree步骤 &#xff08;1&#xff09;先设计一个泛型节点类 &#xff08;2&#xff09;再设计一个泛型的二叉树类 &#xff08;3&#xff09;最后设计Main方法 二、 使用泛型节点类 Node实现二叉树…...

美团2025春招第一次笔试题

第四题 题目描述 塔子哥拿到了一个大小为的数组&#xff0c;她希望删除一个区间后&#xff0c;使得剩余所有元素的乘积未尾至少有k个0。塔子哥想知道&#xff0c;一共有多少种不同的删除方案? 输入描述 第一行输入两个正整数 n,k 第二行输入n个正整数 a_i&#xff0c;代表…...

用游戏面试应聘者的方法

用游戏面试应聘者的方法 例如使用俄罗斯方块来面试&#xff0c;如果对方对这个游戏没有兴趣&#xff0c;或者是游戏结果不够好&#xff0c; 那么可以肯定的是&#xff0c;这个人做不好文物修复的工作。 象棋或者是围棋之类的棋类下得好的人&#xff0c;一般来说&#xff0c;做…...

C#,老鼠迷宫问题的回溯法求解(Rat in a Maze)算法与源代码

1 老鼠迷宫问题 迷宫中的老鼠,作为另一个可以使用回溯解决的示例问题。 迷宫以块的NN二进制矩阵给出,其中源块是最左上方的块,即迷宫[0][0],目标块是最右下方的块,即迷宫[N-1][N-1]。老鼠从源头开始,必须到达目的地。老鼠只能朝两个方向移动:向前和向下。 在迷宫矩阵…...

c语言: 输出几个数的和

输出几个数的和 任务描述 编程输入最少1个最多不超过4个整数&#xff0c;输出他们的和。 输入样例1&#xff1a;5 6 7 8 输出样例1&#xff1a;26 输入样例2&#xff1a;1 5 输出样例2&#xff1a;6 输入样例3&#xff1a;1 5 4 输出样例3&#xff1a;10 输入样例4&#xff…...

liteIDE 解决go root报错 go: cannot find GOROOT directory: c:\go

liteIDE环境配置 我使用的liteIDE为 x36 5.9.5版本 。在查看–>选项 中可以看到 LiteEnv&#xff0c;双击LiteEnv &#xff0c;在右侧选择对应系统的env文件&#xff0c;我的是win64系统&#xff0c;所以文件名为win64.env 再双击 win64.env &#xff0c;关闭当前窗口&…...

力扣_动态规划1—买卖股票的最佳时机

题目 给定一个数组&#xff0c;它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。 注意&#xff1a;你不能同时参与多笔交易&#xff08;你必须在再次购买前出售掉之前的股票&#xff09;。 方法—动态…...

苍穹外卖问题记录(持续更新)

Day01_3.2.4前后端联调 1. 前端无法登录 &#xff08;1&#xff09;确保nginx服务器已经启动 &#xff08;2&#xff09;查看自己数据库的用户名和密码是否和老师的一样&#xff0c;不一样的话需要在application-dev.yml文件中把老师的用户名密码修改成自己的 老师的用户名…...

结合大象机器人六轴协作机械臂myCobot 280 ,解决特定的自动化任务和挑战!(下)

Limo Pro 小车建图导航 引言 前景提要&#xff1a;我们在上文介绍了使用LIMO cobot 实现一个能够执行复杂任务的复合机器人系统的应用场景的项目&#xff0c;从以下三个方面&#xff1a;概念设计、系统架构以及关键组件。 本文主要深入项目内核的主要部分&#xff0c;同样也主要…...

加速 Webpack 构建:提升效率的秘诀

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

Qt自定义标题栏的多屏适配

标题栏自定义 参考博客 &#xff1a; https://blog.csdn.net/goforwardtostep/article/details/53494800 多屏适配 MyTitleBar类抽象定义了自定义标题栏&#xff0c;使用起来相对方便。但是在多屏情况下&#xff0c;窗口初次显示只能在主屏幕上&#xff0c;如果拖到其他屏幕…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...