Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无论我输入字符串还是整数,如何修改代码以获得结果?_Python_Python 3.x - Fatal编程技术网

Python 无论我输入字符串还是整数,如何修改代码以获得结果?

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

我想修改下面的代码,以便它同时接受整数和字符串。也就是说,不管我用“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, 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'太多