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.xinput
相当于Python2.xraw\u input
(请参阅);这是2.x.特有的问题。。从python 2.7开始,input自动调用eval()
x = eval(input("Enter a float number: ")) #eval input