在Python中提供特殊字符作为输入的问题
在Python中,我们可以使用raw_input()
函数(Python 2)或input()
函数(Python 3)来获取用户输入。默认情况下,这些函数返回的是一个字符串类型的输入。如果需要其他数据类型的输入,需要将用户输入进行类型转换。
在Python 2中,我们使用raw_input()
函数来获取用户输入。它会等待用户输入一些内容并按下回车
键,然后我们需要通过类型转换将其存储到一个变量中。在使用类型转换时要小心。
x = raw_input("Enter a number: ") #字符串输入 x = int(raw_input("Enter a number: ")) #整数输入 x = float(raw_input("Enter a float number: ")) #浮点数输入 x = eval(raw_input("Enter a float number: ")) #eval输入
在Python 3中,我们使用input()
函数来获取用户输入。
x = input("Enter a number: ") #字符串输入
如果你输入一个字符串、整数、浮点数或eval,它们都会被当作字符串输入。
x = int(input("Enter a number: ")) #整数输入
如果你对一个字符串进行整数类型转换,会出现ValueError: invalid literal for int() with base 10:
的错误。
x = float(input("Enter a float number: ")) #浮点数输入
如果你对一个字符串进行浮点数类型转换,会出现ValueError: could not convert string to float
的错误。
x = eval(input("Enter a float number: ")) #eval输入
如果你对一个字符串进行eval类型转换,会出现NameError: name ' ' is not defined
的错误。
这些错误在Python 2中也适用。
在Python中提供特殊字符作为输入的问题主要是由于函数input
会将刚刚读取的数据作为Python代码进行评估,这并不是我们想要的。解决这个问题的通用方法是将用户输入(来自sys.stdin
)视为任何其他文件。可以尝试以下方法:
import sys sys.stdin.readline()
如果希望保持简洁,可以使用raw_input
函数,它与input
函数相同,但不进行评估。
另外,如果正在编写一个交互式程序,可以考虑导入readline
模块,这将提供类似于bash的功能(包括内置的历史记录和自动补全,但需要一些设置工作)。
这是最佳的答案,适用于Python 2和3的兼容性。它在两个版本中都可以工作。当然,在最后,还会添加换行符(在Linux中是\n
),这不会产生任何干扰。在Python 3中,raw_input
函数被input
函数取代,但出于兼容性的考虑,它是一个完全不同的函数!在Python 3中,input
函数也允许插入字符串,但在Python 2中,input
函数不允许插入字符串(只有raw_input
函数允许插入字符串,但不幸的是在Python 3中已被移除)。