-3

我一直在尝试为控制台制作一个简单的面向对象游戏。最初,该游戏将创建一个由 0 到 9 之间的随机数创建的列表。该列表的长度将为 5,但有时可能为 4,因为如果列表包含的 0 多于 1,它会自动删除。之后,在对插入 0 的位置进行一些计算后,这将把 0 放入索引。程序将获取变量的第一个索引,该变量将计算在哪里放置 0,但有时第一个索引可能超过我的列表长度. 为此,我创建了一个名为 IndexOfZero 的变量,并将其设置为等于计算在何处放置 0 的变量的第一个索引。完成后,我收到了一个名为 TypeError: 'int' object has no attribute ' getitem '

def PutZero(self, x='t'):

    elements = 0
    element = []
    putZero = 0

    for x in range(len(self.list)):
        elements += self.list[x]
        element.append(elements)

    sum = element[-1]
    print(sum,'This is the sum.')

    if self.list.count(0) == 0:
        putZero = (math.sqrt(math.pow(random.randrange(50,100), 5) / sum + self.list[2]) )
        putZero = int(math.floor(putZero))

    IndexOfZero = putZero[0] """the line that I'm getting error"""

    if IndexOfZero == 0:
        IndexOfZero = random.randrange(0,3)
        print(IndexOfZero,'Randomly generated value')

    if IndexOfZero > 5 or IndexOfZero > 4:"""Do I still get the same error for this line and for the below ?"""
        IndexOfZero = random.randrange(0,3)

    if x:
        return '{}'.format(self.list)

错误是这样的:

Traceback (most recent call last):
File
"/home/guney/Find_Zer0/Code.py", line 52, in PutZero
IndexOfZero = putZero[0]
TypeError: 'int' object has no attribute '__getitem__'
4

1 回答 1

0

问题是你不能索引一个数字。我认为您误解了您使用的教程,或者该教程不可靠。

如果你想得到一个数字的第一位,你可以使用数学,或者先把它变成一个字符串。

由于您使用的是索引,因此您似乎正在尝试第二种方式。

以下是如何执行此操作的示例:

num = 1234
str_num = str(num)
first_char = str_num[0] # Get the first character of the string
first_digit = int(first_char) # Parse the string as an integer

print(first_digit) # Prints the number 1

这种方式比使用直接数学要慢,但在大多数情况下这不应该是一个问题。

于 2018-07-29T19:09:10.450 回答