杰瑞科技汇

Python raw_input()如何正确使用?

raw_input() 是 Python 2 中的一个内置函数,它的作用是从标准输入(通常是键盘)读取一行数据,并将其作为 字符串 返回


基本语法

raw_input() 函数非常简单,可以不带任何参数,也可以带一个可选的字符串参数作为提示信息。

raw_input([prompt])
  • prompt (可选): 这是一个字符串,会在用户输入之前显示在屏幕上,通常用于提示用户应该输入什么,它本身不会被当作输入内容的一部分。

用法示例

示例 1:不带提示信息

最简单的用法,直接读取用户输入的一行。

# Python 2 代码
print "请输入你的名字:"
name = raw_input()
print "你好, %s!" % name

运行过程:

请输入你的名字:
Alice
你好, Alice!

示例 2:带提示信息

将提示信息作为参数直接传递给 raw_input(),代码更简洁。

# Python 2 代码
name = raw_input("请输入你的名字:")
print "你好, %s!" % name

运行过程:

请输入你的名字:
Bob
你好, Bob!

最关键的特点:总是返回字符串

这是 raw_input() 与 Python 2 中另一个函数 input() 最大的区别,也是新手最容易出错的地方。

raw_input() 永远将用户输入的所有内容都当作字符串来处理,无论用户输入的是数字、文字还是其他符号。

示例:

# Python 2 代码
age_str = raw_input("请输入你的年龄:")
print "你输入的年龄类型是:", type(age_str)
print "你输入的年龄是:", age_str

运行过程:

请输入你的年龄:
25
你输入的年龄类型是: <type 'str'>
你输入的年龄是: 25

注意看,即使我们输入了数字 25raw_input() 返回的变量 age_str 的类型仍然是字符串 'str',而不是整数 'int'


常见用法:类型转换

因为 raw_input() 总是返回字符串,所以当你需要获取数字(整数或浮点数)时,必须手动进行类型转换。

转换为整数

使用 int() 函数进行转换。

# Python 2 代码
age_str = raw_input("请输入你的年龄:")
age_int = int(age_str)  # 将字符串转换为整数
print "十年后,你将是 %d 岁。" % (age_int + 10)

运行过程:

请输入你的年龄:
25
十年后,你将是 35 岁。

转换为浮点数

使用 float() 函数进行转换。

# Python 2 代码
price_str = raw_input("请输入商品价格:")
price_float = float(price_str)  # 将字符串转换为浮点数
print "商品打八折后价格为:%.2f" % (price_float * 0.8)

运行过程:

请输入商品价格:
99.9
商品打八折后价格为:79.92

错误处理

如果用户输入的内容无法被转换成目标类型,程序会抛出 ValueError 异常,在实际应用中,最好使用 try-except 结构来处理这种错误。

# Python 2 代码
while True:
    try:
        age_str = raw_input("请输入你的年龄(必须是数字):")
        age_int = int(age_str)
        break  # 如果转换成功,跳出循环
    except ValueError:
        print "输入无效,请重新输入一个数字!"
print "你的年龄是:", age_int

运行过程(示例1):

请输入你的年龄(必须是数字):
abc
输入无效,请重新输入一个数字!
请输入你的年龄(必须是数字):
25
你的年龄是: 25

raw_input() vs input() (Python 2)

在 Python 2 中,还有一个 input() 函数,它和 raw_input() 的行为完全不同,这常常让人困惑。

特性 raw_input() input() (Python 2)
返回类型 总是字符串 将输入作为 Python 表达式求值,返回其结果
安全性 安全 不安全,可以执行任意代码
示例 raw_input("5") 返回字符串 '5' input("5") 返回整数 5
示例 raw_input("hello") 返回字符串 'hello' input("hello") 会报错 NameError: name 'hello' is not defined
示例 raw_input("__import__('os').system('ls')") 返回该字符串 input("__import__('os').system('ls')")执行 ls 命令!

在 Python 2 中,除非你明确知道自己需要 input() 的危险行为,否则请始终使用 raw_input()raw_input() 是获取用户输入的推荐和安全的方式。


Python 3 中的变化

Python 3 对这个混乱的情况进行了简化:

  1. 移除了 raw_input() 函数。
  2. 保留了 input() 函数,但它的行为完全等同于 Python 2 中的 raw_input(),也就是说,Python 3 的 input() 总是返回字符串。

如果你正在使用 Python 3,你只需要记住 input() 就可以了。

Python 3 代码示例:

# Python 3 代码
name = input("请输入你的名字:")  # 注意:在 Python 3 中是 input()
print("你好, %s!" % name)
age_str = input("请输入你的年龄:")
print("你输入的年龄类型是:", type(age_str))

运行过程:

请输入你的名字:
Charlie
你好, Charlie!
请输入你的年龄:
30
你输入的年龄类型是: <class 'str'>
项目 描述
函数 raw_input()
版本 仅 Python 2
作用 从键盘读取一行输入。
返回值 字符串,这是最重要的特性。
用法 variable = raw_input("提示信息:")
类型转换 如果需要数字,必须手动使用 int()float() 转换。
安全替代 在 Python 2 中,应始终优先使用 raw_input() 而非 input()
Python 3 Python 3 中没有 raw_input(),其功能由 input() 实现。

希望这个详细的解释能帮助你完全理解 raw_input() 的用法!

分享:
扫描分享到社交APP
上一篇
下一篇