Python2.7获取用户输入并作为字符串进行操作,无需引用

Python2.7获取用户输入并作为字符串进行操作,无需引用,python,string,python-2.7,Python,String,Python 2.7,我想从用户那里获取一个字符串,然后对其进行操作 testVar = input("Ask user for something.") 有没有一种方法可以让testVar成为一个字符串,而不让用户在引号中键入他的响应?i、 “你好”与“你好” 如果用户键入Hello,我会得到以下错误: 名称错误:未定义名称“Hello”请使用raw\u input()而不是input(): input()实际上将输入作为Python代码进行计算。我建议永远不要用它raw_input()返回用户输入的逐字字符串。

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

testVar = input("Ask user for something.")
有没有一种方法可以让testVar成为一个字符串,而不让用户在引号中键入他的响应?i、 “你好”与“你好”

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

名称错误:未定义名称“Hello”

请使用
raw\u input()
而不是
input()


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

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

通用方法是将用户输入(来自
sys.stdin
)与任何其他文件一样处理。试一试

import sys
sys.stdin.readline()

如果您想保持简短,可以使用
raw\u input
,它与
input
相同,但省略了计算。

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

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

将很好地工作。

如果您想在Python2.x中使用输入而不是原始输入,那么这个技巧会很方便

    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!")
随机导入
输入数学
打印“欢迎参加山姆的数学考试”
num1=random.randint(1,10)
num2=random.randint(1,10)
num3=random.randint(1,10)
列表=[num1、num2、num3]
maxNum=max(列表)
最小值=最小值(列表)
sqrtOne=math.sqrt(num1)
正确=错误
while(correct==False):
猜1=输入(“哪个数字最高?”+str(列表)+“:”)
如果maxNum==1:
打印(“正确!”)
正确的
其他:
打印(“不正确,请重试”)
正确=错误
while(correct==False):
猜测2=输入(“哪个数字最低?”+str(列表)+“:”)
如果minNum==2:
打印(“正确!”)
正确的
其他:
打印(“不正确,请重试”)
正确=错误
while(correct==False):
猜测3=原始输入(“是否“+str(num1)+”的平方根大于或等于2?(y/n):”)
如果sqrtOne>=2.0且str(猜测3)=“y”:
打印(“正确!”)
正确的
elif sqrtOne<2.0且str(猜测3)=“n”:
打印(“正确!”)
正确的
其他:
打印(“不正确,请重试”)
打印(“谢谢玩!”)

这是我的工作,以防将来需要使用python 3时发生故障

def _input(msg):
  return raw_input(msg)

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

在Python 2中,我们使用
raw\u 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
在Python3中,我们使用input()函数返回用户输入值

x = input("Enter a number: ") #String input
如果输入字符串int、float、eval,它将作为字符串输入

x = int(input("Enter a number: ")) #integer input
如果为int cast输入字符串
ValueError:int()的文本无效,以10为基数:

x = float(input("Enter a float number: ")) #float input
如果为浮点转换输入字符串
value错误:无法将字符串转换为浮点

x = eval(input("Enter a float number: ")) #eval input
如果为eval cast输入字符串
name错误:未定义名称“”

这些错误也适用于Python 2。

此外,如果你正在编写一个交互式程序,考虑导入<代码> RealLoad ——这将给出与BASH(历史之外的,自动完成将需要一些规则)类似的特性。我使用同一个函数已经很久了,它一直工作得很好。这是对Python2和Python3兼容性的最好回答。这两个版本都适用。当然,在末尾还添加了行尾字符(在Linux中是
\n
),这根本不会产生任何干扰。在Python3中,
raw_input
函数被
input
函数替换,但出于兼容性原因,它是一个完全不同的函数!在Python3中,
input
函数也允许插入字符串,但在Python2中,
input
函数不允许插入字符串(只有
raw\u input
函数允许插入字符串,这在Python3中已经被删除了),
input
现在是这样工作的,原始输入消失了。您希望用户在什么情况下将python代码插入到您自己的代码中?@JFA:我认为
input()
不是一个有用的函数,我不推荐使用它。Python3.x
input
相当于Python2.x
raw\u input
(请参阅);这是2.x.特有的问题。。从python 2.7开始,input自动调用
eval()
x = eval(input("Enter a float number: ")) #eval input