TypeError: '>' not supported between instances of 'list' and 'int'
TypeError: '>' not supported between instances of 'list' and 'int'
我正在开发一个用于计算游戏中某些值的库。我有这个代码:
million = [1000000, "M"]
billion = [million * 1000, "B"]
trillion = [billion * 1000, "T"]
quadrillion = [trillion * 1000, "Qd"]
quintillion = [quadrillion * 1000, "Qn"]
sx = [quintillion * 1000, "Sx"]
septillion = [sx * 1000, "Sp"]
suffixes = [million, billion, trillion, quadrillion, quintillion, sx, septillion]
def getSetupResult(orevalue, furnacemultiplier, *upgrades, **kwargs):
for i in upgrades:
orevalue *= i
orevalue *= furnacemultiplier
for suffix in suffixes:
if orevalue > suffix[0] - 1 and orevalue < suffix[0] * 1000:
print("$"+str(orevalue)+suffix[1])
getSetupResult(quintillion,700,5,4,10,100)
当我尝试 运行 它时,它引发了这个错误:
Traceback (most recent call last):
File "C:/Users/???/Desktop/MinersHavenCalculator.py", line 19, in <module>
getSetupResult(quintillion,700,5,4,10,100)
File "C:/Users/???/Desktop/MinersHavenCalculator.py", line 16, in getSetupResult
if orevalue > suffix[0] - 1 and orevalue < suffix[0] * 1000:
TypeError: '>' not supported between instances of 'list' and 'int'
导致此错误的原因是什么?
你有很多不区分列表和整数的问题。
million = [1000000, "M"]
billion = [million * 1000, "B"]
billion[0]
实际上不是 1000000 * 1000
,它是一个长度为 1000 的列表。
这是所有问题的根源,因为现在 suffix[0]
在循环的第一次迭代后变成了一个列表。您需要做的最大改变如下:
million = [1000000, "M"]
billion = [million[0] * 1000, "B"]
trillion = [billion[0] * 1000, "T"]
quadrillion = [trillion[0] * 1000, "Qd"]
quintillion = [quadrillion[0] * 1000, "Qn"]
sx = [quintillion[0] * 1000, "Sx"]
septillion = [sx[0] * 1000, "Sp"]
这可确保其中的每一个都是具有正确后缀和值的二元素列表。全部在这里:
suffixes = [million, billion, trillion, quadrillion, quintillion, sx, septillion]
def getSetupResult(orevalue, furnacemultiplier, *upgrades, **kwargs):
for i in upgrades:
orevalue *= i
orevalue *= furnacemultiplier
for suffix in suffixes:
if orevalue > suffix[0] - 1 and orevalue < suffix[0] * 1000:
print("$"+str(orevalue)+suffix[1])
getSetupResult(quintillion[0],700,5,4,10,100)
输出:
000000000000000000000000Sp
看看这个。
>>> million = [1000000, "M"]
>>> billion = [million * 1000, "B"]
>>> print(billion)
[[1000000, 'M', 1000000, 'M', 1000000, 'M', 1000000, 'M', 1000000, 'M', 1000000, 'M', 1000000, 'M', 1000000, 'M', 1000000, 'M', 1000000, 'M', 1000000, 'M', 1000000, 'M', 1000000, 'M', 1000000, 'M', 1000000, 'M', 1000000, 'M', 1000000, 'M', 1000000, 'M', 1000000, 'M', 1000000, 'M', ...
我认为这不是您想要的。
我建议这样
class Number():
def __init__(self, val, suffix):
self.val = val
self.suffix = suffix
million = Number(10**6, "M")
billion = Number(10**9, "B")
trillion = Number(10**12, "T")
quadrillion = Number(10**15, "Qd")
quintillion = Number(10**18, "Qn")
sx = Number(10**21, "Sx")
septillion = Number(10**24, "Sp")
numbers = [million, billion, trillion, quadrillion, quintillion, sx, septillion]
for n in numbers:
print(n.val, n.suffix)
这里输出的样本是谁
1000000 M
1000000000 B
1000000000000 T
1000000000000000 Qd
1000000000000000000 Qn
1000000000000000000000 Sx
1000000000000000000000000 Sp
但想法是您实际上已经命名了变量,而不是仅仅在您似乎不知道那里有哪些变量类型的列表索引上。
为了您的目的,
for n in numbers:
if orevalue > (n.val - 1) and orevalue < (n.val * 1000):
print("${}{}".format(orevalue, n.suffix))
你的million/billion/...变量都是列表。发送 million[0] 以指定列表 million 的第 0 个索引中的 int 1000000,你会得到一个答案 '$14000000000000T'
此外,当您 * 一个列表时,您只是复制该列表并将其乘以多少次。所以你的 million * 1000 需要是 million[0] * 1000 等等。
我正在开发一个用于计算游戏中某些值的库。我有这个代码:
million = [1000000, "M"]
billion = [million * 1000, "B"]
trillion = [billion * 1000, "T"]
quadrillion = [trillion * 1000, "Qd"]
quintillion = [quadrillion * 1000, "Qn"]
sx = [quintillion * 1000, "Sx"]
septillion = [sx * 1000, "Sp"]
suffixes = [million, billion, trillion, quadrillion, quintillion, sx, septillion]
def getSetupResult(orevalue, furnacemultiplier, *upgrades, **kwargs):
for i in upgrades:
orevalue *= i
orevalue *= furnacemultiplier
for suffix in suffixes:
if orevalue > suffix[0] - 1 and orevalue < suffix[0] * 1000:
print("$"+str(orevalue)+suffix[1])
getSetupResult(quintillion,700,5,4,10,100)
当我尝试 运行 它时,它引发了这个错误:
Traceback (most recent call last):
File "C:/Users/???/Desktop/MinersHavenCalculator.py", line 19, in <module>
getSetupResult(quintillion,700,5,4,10,100)
File "C:/Users/???/Desktop/MinersHavenCalculator.py", line 16, in getSetupResult
if orevalue > suffix[0] - 1 and orevalue < suffix[0] * 1000:
TypeError: '>' not supported between instances of 'list' and 'int'
导致此错误的原因是什么?
你有很多不区分列表和整数的问题。
million = [1000000, "M"]
billion = [million * 1000, "B"]
billion[0]
实际上不是 1000000 * 1000
,它是一个长度为 1000 的列表。
这是所有问题的根源,因为现在 suffix[0]
在循环的第一次迭代后变成了一个列表。您需要做的最大改变如下:
million = [1000000, "M"]
billion = [million[0] * 1000, "B"]
trillion = [billion[0] * 1000, "T"]
quadrillion = [trillion[0] * 1000, "Qd"]
quintillion = [quadrillion[0] * 1000, "Qn"]
sx = [quintillion[0] * 1000, "Sx"]
septillion = [sx[0] * 1000, "Sp"]
这可确保其中的每一个都是具有正确后缀和值的二元素列表。全部在这里:
suffixes = [million, billion, trillion, quadrillion, quintillion, sx, septillion]
def getSetupResult(orevalue, furnacemultiplier, *upgrades, **kwargs):
for i in upgrades:
orevalue *= i
orevalue *= furnacemultiplier
for suffix in suffixes:
if orevalue > suffix[0] - 1 and orevalue < suffix[0] * 1000:
print("$"+str(orevalue)+suffix[1])
getSetupResult(quintillion[0],700,5,4,10,100)
输出:
000000000000000000000000Sp
看看这个。
>>> million = [1000000, "M"]
>>> billion = [million * 1000, "B"]
>>> print(billion)
[[1000000, 'M', 1000000, 'M', 1000000, 'M', 1000000, 'M', 1000000, 'M', 1000000, 'M', 1000000, 'M', 1000000, 'M', 1000000, 'M', 1000000, 'M', 1000000, 'M', 1000000, 'M', 1000000, 'M', 1000000, 'M', 1000000, 'M', 1000000, 'M', 1000000, 'M', 1000000, 'M', 1000000, 'M', 1000000, 'M', ...
我认为这不是您想要的。
我建议这样
class Number():
def __init__(self, val, suffix):
self.val = val
self.suffix = suffix
million = Number(10**6, "M")
billion = Number(10**9, "B")
trillion = Number(10**12, "T")
quadrillion = Number(10**15, "Qd")
quintillion = Number(10**18, "Qn")
sx = Number(10**21, "Sx")
septillion = Number(10**24, "Sp")
numbers = [million, billion, trillion, quadrillion, quintillion, sx, septillion]
for n in numbers:
print(n.val, n.suffix)
这里输出的样本是谁
1000000 M
1000000000 B
1000000000000 T
1000000000000000 Qd
1000000000000000000 Qn
1000000000000000000000 Sx
1000000000000000000000000 Sp
但想法是您实际上已经命名了变量,而不是仅仅在您似乎不知道那里有哪些变量类型的列表索引上。
为了您的目的,
for n in numbers:
if orevalue > (n.val - 1) and orevalue < (n.val * 1000):
print("${}{}".format(orevalue, n.suffix))
你的million/billion/...变量都是列表。发送 million[0] 以指定列表 million 的第 0 个索引中的 int 1000000,你会得到一个答案 '$14000000000000T'
此外,当您 * 一个列表时,您只是复制该列表并将其乘以多少次。所以你的 million * 1000 需要是 million[0] * 1000 等等。