导入随机 - python 中的 randint 不工作
import random - randint in python not working
我被选中参加明天的 python 比赛 (aio.edu.au),我正在尝试其中一个练习题但已经失败了,因为显然 random.randit 需要一个字符串.
我已经试过了...
import random
a = "7 2"
b = a.split(" ")
random.randint(0, b[0])
我希望它的输出是随机选择 0 到 7 之间的任何数字,包括 0 和 7。但它给出了这个错误信息:
Traceback (most recent call last):
File "program.py", line 4, in <module>
random.randint(0, b[0])
File "/opt/python-3.6/lib/python3.6/random.py", line 220, in randint
return self.randrange(a, b+1)
TypeError: must be str, not int
有什么帮助吗?
拆分字符串时会得到一个字符串数组,ranint 不会将字符串作为参数,因此您必须将其转换为整数。
import random
a = "7 2"
b = a.split(" ")
random.randint(0, int(b[0]))
您已使用 split
将字符串转换为字符串列表。它们不是整数,randint 取整数。
将 str 转换为 int:
>>> random.randint(0, int(b[0]))
4
>>>
恭喜!您在 random
模块中发现了一个未捕获的异常!
random.randint(a, b)
取两个整数作为输入(即a
和b
,其中a
小于等于b
,documentation here).但是错误信息是不正确的。它应该是这样的:
TypeError: must be int, not str
因此,如果您的字符串值不需要作为输入的一部分,您可以只输入纯整数,或者从列表中删除,或者如果您确实需要,可以保留字符串输入:
import random
# just a single integer
random.randint(0, 7)
# using a list of potential values
bounds = [7, 2]
random.randint(0, bounds[0])
random.randint(0, bounds[1])
# or stick with the string conversion
bounds = "7 2"
random.randint(0, int(bounds.split(" ")[0])
random.randint(0, int(bounds.split(" ")[1])
编辑:如果有人对异常感兴趣,这里是 randint
的定义:
def randint(self, a, b):
"""Return random integer in range [a, b], including both end points.
"""
return self.randrange(a, b+1)
问题是 b+1
是 str + int
,这就是问题中出现 TypeError
的原因。
我被选中参加明天的 python 比赛 (aio.edu.au),我正在尝试其中一个练习题但已经失败了,因为显然 random.randit 需要一个字符串.
我已经试过了...
import random
a = "7 2"
b = a.split(" ")
random.randint(0, b[0])
我希望它的输出是随机选择 0 到 7 之间的任何数字,包括 0 和 7。但它给出了这个错误信息:
Traceback (most recent call last):
File "program.py", line 4, in <module>
random.randint(0, b[0])
File "/opt/python-3.6/lib/python3.6/random.py", line 220, in randint
return self.randrange(a, b+1)
TypeError: must be str, not int
有什么帮助吗?
拆分字符串时会得到一个字符串数组,ranint 不会将字符串作为参数,因此您必须将其转换为整数。
import random
a = "7 2"
b = a.split(" ")
random.randint(0, int(b[0]))
您已使用 split
将字符串转换为字符串列表。它们不是整数,randint 取整数。
将 str 转换为 int:
>>> random.randint(0, int(b[0]))
4
>>>
恭喜!您在 random
模块中发现了一个未捕获的异常!
random.randint(a, b)
取两个整数作为输入(即a
和b
,其中a
小于等于b
,documentation here).但是错误信息是不正确的。它应该是这样的:
TypeError: must be int, not str
因此,如果您的字符串值不需要作为输入的一部分,您可以只输入纯整数,或者从列表中删除,或者如果您确实需要,可以保留字符串输入:
import random
# just a single integer
random.randint(0, 7)
# using a list of potential values
bounds = [7, 2]
random.randint(0, bounds[0])
random.randint(0, bounds[1])
# or stick with the string conversion
bounds = "7 2"
random.randint(0, int(bounds.split(" ")[0])
random.randint(0, int(bounds.split(" ")[1])
编辑:如果有人对异常感兴趣,这里是 randint
的定义:
def randint(self, a, b):
"""Return random integer in range [a, b], including both end points.
"""
return self.randrange(a, b+1)
问题是 b+1
是 str + int
,这就是问题中出现 TypeError
的原因。