在Python中提供特殊字符作为输入的问题

13 浏览
0 Comments

在Python中提供特殊字符作为输入的问题

我想从用户那里获取一个字符串,然后对其进行操作。

testVar = input("向用户询问一些内容。")

有没有办法让testVar成为一个字符串,而不需要用户在回答时加上引号?例如,"Hello"和Hello之间的区别。

如果用户输入Hello,我会收到以下错误信息:

NameError: name 'Hello' is not defined

0
0 Comments

在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中也适用。

0
0 Comments

在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中已被移除)。

0
0 Comments

在Python中,如果想要在代码中提供特殊字符作为输入,可以使用raw_input()而不是input()函数。input()函数会将输入作为Python代码进行评估,因此不建议使用。而raw_input()函数会将用户输入原样返回。

然而需要注意的是,在Python 3中,input()函数已经改变了工作方式,与raw_input()函数一样,返回原始的用户输入字符串,而raw_input()函数已经被移除。

那么,在什么情况下我们会希望在代码中让用户插入Python代码呢?我认为input()函数并不是一个实用的函数,不建议使用。

0