Python 2.7 获取用户输入并以不带引号的字符串形式进行操作
- 2025-01-17 09:22:00
- admin 原创
- 23
问题描述:
我想从用户那里获取一个字符串,然后对其进行操作。
testVar = input("Ask user for something.")
有没有办法让 testVar 成为字符串,而无需用户在引号中输入他的回答?例如“Hello”与 Hello
如果用户输入Hello,我会收到以下错误:
NameError:名称“Hello”未定义
解决方案 1:
使用raw_input()
而不是input()
:
testVar = raw_input("Ask user for something.")
input()
实际上将输入作为 Python 代码进行评估。我建议永远不要使用它。 raw_input()
返回用户输入的逐字字符串。
解决方案 2:
该函数input
还将把刚刚读取的数据评估为 Python 代码,但这并不是您真正想要的。
通用方法是将用户输入(来自sys.stdin
)视为任何其他文件。尝试
import sys
sys.stdin.readline()
如果想简短些,可以使用raw_input
与之相同input
但省略求值的操作。
解决方案 3:
raw_input()
我们可以在 Python 2 中使用该函数,也可以input()
在 Python 3 中使用该函数。默认情况下,输入函数接受字符串格式的输入。对于其他数据类型,您必须转换用户输入。
在 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
如果你输入一个字符串、整数、浮点数、eval,它将作为字符串输入
x = int(input("Enter a number: ")) #integer input
如果你输入一个字符串进行 int 转换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 cast,NameError: name ' ' is not defined
这些错误也适用于 Python 2。
解决方案 4:
如果你想在 python 2.x 中使用 input 而不是 raw_input,那么这个技巧会派上用场
if hasattr(__builtins__, 'raw_input'):
input=raw_input
之后,
testVar = input("Ask user for something.")
就可以正常工作。
解决方案 5:
testVar = raw_input("Ask user for something.")
解决方案 6:
我的工作代码已修复:
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!")
解决方案 7:
这是我为防止将来需要迁移到 Python 3 而采取的安全措施。
def _input(msg):
return raw_input(msg)
解决方案 8:
该问题似乎已在 Python 版本 3.4.2 中得到解决。
testVar = input("Ask user for something.")
会正常工作。
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 项目管理必备:盘点2024年13款好用的项目管理软件
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)