Python 无论我输入字符串还是整数,如何修改代码以获得结果?
我想修改下面的代码,以便它同时接受整数和字符串。也就是说,不管我用“21”还是“21”,都会得到一个结果Python 无论我输入字符串还是整数,如何修改代码以获得结果?,python,python-3.x,Python,Python 3.x,我想修改下面的代码,以便它同时接受整数和字符串。也就是说,不管我用“21”还是“21”,都会得到一个结果 import random class Game(object): def __init__(self, lower, higher): self.lower_limit = lower self.upper_limit = higher self.number = random.randrange(self.lower_limit
import random
class Game(object):
def __init__(self, lower, higher):
self.lower_limit = lower
self.upper_limit = higher
self.number = random.randrange(self.lower_limit, self.upper_limit)
def guess(self, num):
if (num) < self.__number:
print("Die Zahl ist zu klein!")
elif (num) > self.__number:
print("Die Zahl ist zu groß!")
else:
print("Bingo!!!")
def get_lower (self):
return self.__lower_limit
def get_upper(self):
return self.__upper_limit
lower_limit = property (_get_lower_limit, _set_lower_limit)
upper_limit = property (_get_upper_limit, _set_upper_limit)
g = Game(0,20)
while True:
try:
n = input("Which number? ")
g.guess(int(n))
except ValueError:
print("not an integer")
print(g.guess)
随机导入
班级游戏(对象):
定义初始值(自身、较低、较高):
自我下限=下限
自我上限=更高
self.number=random.randrange(self.lower\u limit,self.upper\u limit)
def guess(self,num):
如果(num)自我编号:
印刷品(“Die Zahl ist zu groß!”
其他:
打印(“宾果!!!”)
def降下(自身):
返回自我。下限
def get_上部(自身):
返回自我。上限
下限=属性(\u获取\u下限,\u设置\u下限)
上限=属性(获取上限、设置上限)
g=博弈(0,20)
尽管如此:
尝试:
n=输入(“哪个号码?”)
g、 猜测(int(n))
除值错误外:
打印(“非整数”)
打印(g.guess)
在init部分将其强制转换为int
self.lower_limit = int(lower)
self.upper_limit = int(higher)
您已强制转换参数:
g.guess(int(n))
现在它不再需要了。使用
n=int()函数,用于数字来自输入的行。您可以使用str().strip(“')将其默认设置为字符串,然后使用int()如果您希望用户能够输入包含整数的字符串文本,您可以在尝试将其转换为整数之前添加对
ast.literal\u eval()
的调用:
import ast
s1 = "'21'"
s2 = "21"
print(int(ast.literal_eval(s1))) # prints 21
print(int(ast.literal_eval(s2))) # prints 21
不过,对于用户输入中的不同错误情况,您可能需要捕获一些其他异常(例如,ValueError
,SyntaxError
,可能更多)
供参考:
输入已经是一个字符串,我不清楚您要寻找的其他行为。是否要支持在用户输入中添加引号?如果我在代码上按enter键,它当然会要求我给出一个数字,以便开始执行。当我进入示例4时,一切正常。现在我想让它工作,即使我输入'4'或'4'太多