百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

python入门到脱坑 输入与输出—input()函数

liuian 2025-06-10 16:27 5 浏览

以下是针对Python初学者的input()函数完整指南,包含基础用法、安全注意事项和实用技巧:


一、基础用法

1. 接收用户输入

name = input("请输入你的名字:")  # 提示语可选
print(f"你好,{name}!")

执行过程

  1. 程序暂停,等待用户输入
  2. 用户按回车后,输入内容以字符串形式返回
  3. 继续执行后续代码

2. 多行输入提示

prompt = """请填写信息:
用户名:"""
username = input(prompt)

二、类型转换处理

input()始终返回字符串,需手动转换类型:

# 安全转换示例
try:
    age = int(input("你的年龄:"))  # 转换为整数
    height = float(input("身高(米):"))  # 转换为浮点数
except ValueError:
    print("请输入有效数字!")

三、实用技巧

1. 设置默认值

from getpass import getpass
password = getpass("请输入密码:")  # 输入时不会显示内容

3. 超时自动取消

import signal

def timeout_handler(signum, frame):
    raise TimeoutError("输入超时")

signal.signal(signal.SIGALRM, timeout_handler)
signal.alarm(5)  # 5秒超时
try:
    data = input("请在5秒内输入:")
except TimeoutError:
    print("\n时间到!")
finally:
    signal.alarm(0)  # 取消计时器

四、安全注意事项

1. 永远不要直接eval输入

# 危险!用户可以输入恶意代码
x = eval(input("输入计算式:"))  # 若输入__import__('os').system('rm -rf /')会引发灾难

# 安全替代方案
import ast
safe_data = ast.literal_eval(input("输入列表/字典:"))  # 仅支持基础数据结构

2. 防注入处理(数据库操作)

# 错误示范(SQL注入风险)
user_input = input("用户名:")
query = f"SELECT * FROM users WHERE name = '{user_input}'"

# 正确做法(使用参数化查询)
cursor.execute("SELECT * FROM users WHERE name = %s", (user_input,))

五、输入验证模板


def get_valid_input(prompt, validate_func, error_msg):
    while True:
        user_input = input(prompt)
        if validate_func(user_input):  # 验证函数返回True/False
            return user_input
        print(error_msg)

# 使用示例:只接受数字
phone = get_valid_input(
    "手机号:",
    lambda x: x.isdigit() and len(x) == 11,
    "请输入11位数字手机号!"
)

六、常见问题解答

Q1: 如何输入多个值?

# 方法1:用split分割
data = input("输入两个数字(空格分隔):").split()
a, b = map(float, data)  # 转换为数值

# 方法2:多次input
a = float(input("第一个数字:"))
b = float(input("第二个数字:"))

Q2: 为什么input()在IDE中不显示提示?

某些IDE(如PyCharm)需配置运行模式,建议:

  1. 使用终端运行脚本
  2. 或在IDE设置中启用"模拟终端"

Q3: 如何清空输入缓冲区?

import sys
sys.stdin.flush()  # 清空标准输入缓存

七、实际应用案例

1. 简易计算器

try:
    expr = input("输入算式(如3+5):")
    result = eval(expr)  # 实际开发应用更安全的计算库
    print(f"结果:{result}")
except:
    print("无效输入")

2. 用户注册流程

def register():
    username = input("设置用户名:").strip()
    while not username.isalnum():  # 只允许字母数字
        print("用户名只能包含字母和数字")
        username = input("重新输入:").strip()
    
    password = getpass("设置密码:")
    return {"username": username, "password": password}

八、扩展知识

  1. 文件重定向输入
# 终端执行(将文件内容作为输入)
python script.py < input.txt
  1. 跨平台回车符处理
# 统一换行符为\n
user_input = input().replace('\r', '')
  1. 历史记录功能
import readline  # Unix-like系统可用
while True:
    cmd = input(">>> ")
    if cmd == "history":
        for i in range(readline.get_current_history_length()):
            print(readline.get_history_item(i + 1))

掌握input()后,下一步可以学习:

  1. 命令行参数解析(argparse模块)
  2. 图形界面输入(如tkinter)
  3. 网络请求输入(requests获取API数据)

相关推荐

Python处理文件系统路径,pathlib库使用

pathlib是Python3.4及以后版本中的一个内置类库,它提供了一种简单而直观的方式来处理文件系统路径,同时也能够轻松地处理各种不同类型的路径。在本教程中,我们将介绍如何使用pathlib类库来...

Python目录与文件操作教程(python文件目录结构)

大家好,我是ICodeWR。今天要记录的是如何使用Python进行常见的目录和文件操作。Python提供了强大的内置模块来处理文件和目录操作。1.基本模块介绍Python中主要使用以下模块进行文件...

Python文件操作(python文件操作菜鸟教程)

文件编码编码技术即:翻译的规则,记录了如何将内容翻译成二进制,以及如何将二进制翻译回可识别内容。计算机中有许多可用编码:UTF-8、GBK、Big5等。不同的编码,将内容翻译成二进制也是不同的。编码有...

python中文件读写操作最佳实践——使用 os.path 进行路径操作

在Python中处理文件路径时,使用os.path模块比直接使用字符串拼接更加安全、可靠且跨平台。下面我将详细解释为什么以及如何使用os.path进行路径操作。为什么不应该使用字符串拼接?#不推荐的...

Python中列出目录下所有文件的方法

技术背景在Python编程中,经常需要列出目录下的所有文件,根据不同的需求,可能只需要列出当前目录下的文件,也可能需要递归列出子目录下的所有文件。Python提供了多种方法来实现这一功能,下面将详细介...

Python文件及目录处理方法(python列出目录下文件)

Python可以用于处理文本文件和二进制文件,比如创建文件、读写文件等操作。本文介绍Python处理目录以及文件的相关方法。下面先来介绍python目录处理相关方法。目录操作1.获取当前代码路径te...

Python路径操作的一些基础方法(python 程序路径)

带你走进@机器人时代Discover点击上面蓝色文字,关注我们Python自动化操作文件避开不了路径操作方法,今天我们来学习一下路径操作的一些基础。Pathlib库模块提供的路径操作包括路径的...

Python如何获取当前文件所在目录的完整路径

在编程的过程中,我们常常会遇到需要获取当前文件所在目录完整路径的需求。那具体该怎么做呢?这是在众多开发者群体中备受关注的一个问题,就像在问答平台上“/questions/3430372/how-d...

AI超助:打造第一个Python应用(6)(python ai软件)

即然已定确定时间节点,倒计时。期间还有个中秋节,便得排好了日程,这段时间得紧着点。打开pycharm就好似在用点金术。调试python,就好似用各种食材准备一道大餐。照例每天碰到疑难,照例每天遇到欣...

我在iPad上装了个IDEA,撸了个SpringBoot项目

刚开发的哥们儿都知道,系统上线后,如果有bug,领导会第一时间打电话过来,半夜也得起来改bug,随时随地改bug就是程序员的日常,这就导致很多程序下班后必须背着电脑挤地铁,随时候着,拖着疲惫的身体再扛...

用户说 | 通义灵码2.0,跨语言编码+自动生成单元测试+集成DeepSeek

作者:小鱼引言通义灵码是我一直使用的编码协助工具,我也愿称之为国内程序员的”饭搭子”。通义灵码,作为国内首个AI程序员,从最开始的内测到公测,再到通义灵码正式发布第一时间使用,再到后来使用企业定...

初识C语言:简介、环境搭建、第一个HelloWorld

一、本系列文章简介什么是C语言C语言之父C语言的由来C语言的发展为什么要学C语言/能做什么为什么要学习这套C语言本套课程适用人群本套笔记介绍二、C语言标准2.1标准简史1.1972年C语言在尔实验...

5款工具,让你轻松创建并分享优美的项目源码

作为一名开发人员,经常会遇到一些分享和展示代码的需求。例如,在博客分享知识时、请教别人编码方面问题时,都需要用到代码的展示与分享。对于我来说感受最为强烈的就是分享知识时,作为一名IT技术方面的分享者,...

风变编程-python基础语法-第17关用python发邮件

复习一下上一关的内容,模块的相关知识,以及学习模块的方法(2图)得了,我们可以开始今天的项目实操了1.明确项目目标这一关的主题,其实最早是来源于往期学员的一个问题:学员小贾是一名外贸人员,每到了节...

如何在Eclipse中配置Python开发环境?

Eclipse是著名的跨平台集成开发环境(IDE),最初主要用来Java语言开发。但是我们通过安装不同的插件Eclipse可以支持不同的计算机语言。比如说,我们可以通过安装PyDev插件,使Eclip...