Logo
Published on

2.14.输入

Authors
  • avatar
    Name
    xiaobai
    Twitter

1.基本输入:input() 函数

input() 函数用于从用户获取输入,它会暂停程序执行,等待用户输入内容。

1.1.基本用法

# 最简单的输入
name = input()
print(f"你好,{name}!")

1.2.带提示信息的输入

# 显示提示信息,让用户知道该输入什么
name = input("请输入你的姓名:")
age = input("请输入你的年龄:")

print(f"你好,{name}!你今年{age}岁。")

运行效果:

请输入你的姓名:张三
请输入你的年龄:25
你好,张三!你今年25岁!

2.input() 函数的重要特性

2.1.1. 返回值永远是字符串

无论用户输入什么,input() 都返回字符串类型。

# 即使输入数字,返回的也是字符串
number = input("请输入一个数字:")
print(type(number))  # <class 'str'>
print(f"你输入的是:{number}")

# 运行示例:
# 请输入一个数字:42
# <class 'str'>
# 你输入的是:42

2.2.2. 类型转换

由于 input() 返回字符串,通常需要转换为合适的类型。

# 转换为整数
age = int(input("请输入你的年龄:"))
print(f"类型:{type(age)},值:{age}")

# 转换为浮点数
height = float(input("请输入你的身高(米):"))
print(f"类型:{type(height)},值:{height}")

# 转换为布尔值(需要额外处理)
is_student = input("你是学生吗?(y/n):").lower() == 'y'
print(f"类型:{type(is_student)},值:{is_student}")

3.输入验证和错误处理

由于用户可能输入错误的数据,需要进行验证。

3.1.基本的错误处理

try:
    age = int(input("请输入你的年龄:"))
    print(f"你的年龄是:{age}")
except ValueError:
    print("错误:请输入有效的数字!")

3.2.循环验证直到输入正确

while True:
    try:
        age = int(input("请输入你的年龄:"))
        if age < 0 or age > 150:
            print("请输入合理的年龄(0-150)")
            continue
        break
    except ValueError:
        print("错误:请输入有效的数字!")

print(f"验证通过!你的年龄是:{age}")

3.3.完整的输入验证函数

def get_valid_input(prompt, input_type=str, validation_func=None):
    """
    获取有效的用户输入
    
    参数:
        prompt: 提示信息
        input_type: 期望的数据类型
        validation_func: 自定义验证函数
    """
    while True:
        try:
            user_input = input(prompt)
            
            # 类型转换
            if input_type != str:
                user_input = input_type(user_input)
            
            # 自定义验证
            if validation_func and not validation_func(user_input):
                print("输入不符合要求,请重新输入。")
                continue
                
            return user_input
            
        except ValueError:
            print(f"错误:请输入有效的{input_type.__name__}类型数据!")
        except Exception as e:
            print(f"发生错误:{e}")

# 使用示例
age = get_valid_input("请输入年龄:", int, lambda x: 0 <= x <= 150)
print(f"你的年龄:{age}")

email = get_valid_input("请输入邮箱:", str, lambda x: '@' in x)
print(f"你的邮箱:{email}")

4.以下内容不用看,Python全部学完后再看

5.实际应用场景

5.1.简单的用户注册

print("=== 用户注册 ===")
username = input("请输入用户名:")
password = input("请输入密码:")
email = input("请输入邮箱:")

print(f"\n注册成功!")
print(f"用户名:{username}")
print(f"密码:{'*' * len(password)}")
print(f"邮箱:{email}")

5.2.计算器应用

try:
    num1 = float(input("请输入第一个数字:"))
    operator = input("请输入运算符 (+, -, *, /):")
    num2 = float(input("请输入第二个数字:"))
    
    if operator == '+':
        result = num1 + num2
    elif operator == '-':
        result = num1 - num2
    elif operator == '*':
        result = num1 * num2
    elif operator == '/':
        if num2 == 0:
            print("错误:除数不能为零!")
        else:
            result = num1 / num2
    else:
        print("错误:不支持的运算符!")
        result = None
        
    if result is not None:
        print(f"结果:{num1} {operator} {num2} = {result}")
        
except ValueError:
    print("错误:请输入有效的数字!")

5.3.问卷调查

name = input("1. 您的姓名:")
satisfaction = input("2. 您对我们的服务满意吗?(非常满意/满意/一般/不满意):")
suggestions = input("3. 您有什么建议或意见?:")

print("\n=== 调查结果 ===")
print(f"受访者:{name}")
print(f"满意度:{satisfaction}")
print(f"建议:{suggestions}")
print("感谢您的参与!")

6.高级输入技巧

6.1.一次性输入多个值

# 方法一:使用 split() 分割
data = input("请输入多个数字,用空格分隔:").split()
numbers = [float(x) for x in data]
print(f"你输入的数字:{numbers}")

# 方法二:指定分隔符
csv_data = input("请输入数据(用逗号分隔):").split(',')
print(f"解析后的数据:{csv_data}")

# 运行示例:
# 请输入多个数字,用空格分隔:10 20 30 40
# 你输入的数字:[10.0, 20.0, 30.0, 40.0]

6.2.密码输入(不显示内容)

import getpass

# 安全地输入密码(输入时不显示内容)
password = getpass.getpass("请输入密码:")
print(f"密码长度:{len(password)}")

# 验证密码
confirm_password = getpass.getpass("请确认密码:")

if password == confirm_password:
    print("密码设置成功!")
else:
    print("密码不匹配!")

7.输入的最佳实践

7.1.提供清晰的提示

# 不好的提示
n = input("输入数字:")

# 好的提示
number_of_students = input("请输入学生人数(1-50):")

7.2.处理空白输入

name = input("请输入姓名:").strip()
if not name:
    print("姓名不能为空!")
else:
    print(f"你好,{name}!")

7.3.3. 提供默认值

# 方法一:在提示中显示默认值
language = input("选择语言 (默认: Python):").strip()
if not language:
    language = "Python"

# 方法二:使用条件表达式
port = input("输入端口号:").strip()
port = int(port) if port else 8080

print(f"语言:{language},端口:{port}")

8.常见问题与解决方案

8.1.问题1:输入中文时的编码问题

# 在Python 3中通常不需要特殊处理
name = input("请输入中文姓名:")
print(f"你好,{name}!")

8.2.问题2:处理文件路径输入

import os

file_path = input("请输入文件路径:").strip()

# 处理路径中的引号
file_path = file_path.strip('"\'') 
print(file_path)

8.3.问题3:输入菜单选择

def show_menu():
    print("\n=== 主菜单 ===")
    print("1. 查看信息")
    print("2. 修改信息") 
    print("3. 退出")
    
    while True:
        choice = input("请选择 (1-3):").strip()
        if choice in ['1', '2', '3']:
            return int(choice)
        else:
            print("无效选择,请重新输入!")

# 使用菜单
choice = show_menu()
print(f"你选择了选项 {choice}")

9.总结

  1. 基本用法input("提示信息") 获取用户输入
  2. 返回值:永远是字符串类型,需要时进行类型转换
  3. 错误处理:使用 try-except 处理无效输入
  4. 输入验证:确保输入数据符合要求
  5. 实用技巧:多值输入、密码隐藏、输入超时等
  6. 最佳实践:清晰的提示、处理空白输入、提供默认值
img