Python 2.7获取用户输入并作为字符串进行操作,而不使用引号

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

testVar = input("Ask user for something.")

有没有一种方法可以让 testVar 成为一个字符串,而不需要用户用引号键入他的响应?也就是“你好”和“你好”的区别

如果用户键入 Hello,我会得到以下错误:

未定义名称‘ Hello’

564438 次浏览

使用 raw_input()代替 input():

testVar = raw_input("Ask user for something.")

input()实际上将输入作为 Python 代码进行计算。我建议永远不要用它。raw_input()返回用户输入的字符串。

函数 input还将计算它刚刚读取的数据作为 python 代码,这并不是您真正想要的。

一般的方法是像对待其他文件一样对待用户输入(来自 sys.stdin)

import sys
sys.stdin.readline()

如果你想让它保持简短,你可以使用 raw_input,它与 input相同,但是省略了计算。

testVar = raw_input("Ask user for something.")

这个问题似乎在 Python 版本3.4.2中得到了解决。

testVar = input("Ask user for something.")

没问题。

如果您希望在 python 2.x 中使用 input 而不是 raw _ input,那么这个技巧将会派上用场

    if hasattr(__builtins__, 'raw_input'):
input=raw_input

之后,

testVar = input("Ask user for something.")

会很好用的。

我的修复工作代码:

import random
import math
print "Welcome to Sam's Math Test"
num1= random.randint(1, 10)
num2= random.randint(1, 10)
num3= random.randint(1, 10)
list=[num1, num2, num3]
maxNum= max(list)
minNum= min(list)
sqrtOne= math.sqrt(num1)


correct= False
while(correct == False):
guess1= input("Which number is the highest? "+ str(list) + ": ")
if maxNum == guess1:
print("Correct!")
correct = True
else:
print("Incorrect, try again")


correct= False
while(correct == False):
guess2= input("Which number is the lowest? " + str(list) +": ")
if minNum == guess2:
print("Correct!")
correct = True
else:
print("Incorrect, try again")


correct= False
while(correct == False):
guess3= raw_input("Is the square root of " + str(num1) + " greater than or equal to 2? (y/n): ")
if sqrtOne >= 2.0 and str(guess3) == "y":
print("Correct!")
correct = True
elif sqrtOne < 2.0 and str(guess3) == "n":
print("Correct!")
correct = True
else:
print("Incorrect, try again")


print("Thanks for playing!")

这是我的工作周围的故障安全,以防万一,如果我将来需要移动到 python3。

def _input(msg):
return raw_input(msg)

我们可以在 Python2中使用 raw_input()函数,在 Python3中使用 input()函数。 默认情况下,input 函数接受字符串格式的输入。对于其他数据类型,必须强制转换用户输入。

在 Python 2中,我们使用 raw_input()函数。它等待用户键入一些输入并按下 return,我们需要通过强制转换为我们需要的数据类型来将值存储在一个变量中。使用铸型时要小心

x = raw_input("Enter a number: ") #String input


x = int(raw_input("Enter a number: ")) #integer input


x = float(raw_input("Enter a float number: ")) #float input


x = eval(raw_input("Enter a float number: ")) #eval input

在 Python 3中,我们使用 input ()函数返回用户输入值。

x = input("Enter a number: ") #String input

如果你输入一个字符串,int,float,eval,它将作为字符串输入

x = int(input("Enter a number: ")) #integer input

如果为 int cast 输入字符串 ValueError: invalid literal for int() with base 10:

x = float(input("Enter a float number: ")) #float input

如果输入浮点强制转换字符串 ValueError: could not convert string to float

x = eval(input("Enter a float number: ")) #eval input

如果为 eval 强制转换输入字符串 NameError: name ' ' is not defined 这些错误也适用于 Python2。