获取类型错误:“ int”对象在Python 3中不可下标

时间:2020-03-03 08:36:29

标签: python

我正在编写2组4位数字,以检查是否有相同的数字 程序将随机输入4位数字(例如3415),用户必须通过输入4位数字(例如5213)来猜测该数字,因此,如果有3个匹配但在不同位置将打印◘或'white',而1个则匹配并具有将打印•或“黑色”的相同位置。

所以我收到TypeError:'int'对象不可下标。 (第48行)

import random

#---------------------- RANDOM INT ------------------------------#

number="%04d" % random.randint(0,9999)
#print(number)
b = str(number)
numlist=[]

for digit in b:
    numlist.append (int(digit))

#-----------------------------------------------------------------------#

#----------------------- INPUT --------------------------------------#

enter = int(input('Enter 4 digits number : '))
c = str(enter)
enlist=[]

for digit in c:
    enlist.append (int(digit))

#enlist = int(enlist)
print(enlist)

#------------------------------------------------------------------------#

#--------------------- DEFINING -------------------------------------#

black=0
white=0
false=0

i = range(0,3)
j = range(0,3)

#-------------------------------------------------------------------------#

print(numlist)

#i = int(i)
#j = int(j)

for numlist in range(0,4):
    for enlist in range(0,4):
        if i==j:
            if enlist[i]==numlist[j]:  #THIS LINE
                black =+ 1
            else:
                false =+ 1
        else:
            if enlist[i]==numlist[j]:
                white =+1
            else:
                false =+ 1

print(black*"•" , white*"◘")

2 个答案:

答案 0 :(得分:0)

在for循环中,您用整数覆盖enlist和numlist,然后尝试以列表形式访问它,请在for循环中更改变量名称。

使用一个for循环

for i in range(len(enlist)):
    if(enlist[i] == numlist[i]:
        # your code

答案 1 :(得分:0)

当您将numlist和enlist用作可迭代对象时,它们将转换为range(0,4)中的int,因此会出现错误。 而是尝试以下方法:

for i in range(len(enlist)):
 for j in range(len(numlist)):
    if i==j:
        if enlist[i]==numlist[j]:  #THIS LINE
            black =+ 1
        '''