当前位置: 首页 > 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;如果拖到其他屏幕…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

push [特殊字符] present

push &#x1f19a; present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中&#xff0c;push 和 present 是两种不同的视图控制器切换方式&#xff0c;它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

Git常用命令完全指南:从入门到精通

Git常用命令完全指南&#xff1a;从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...