为什么此代码会产生错误“ int无法下标”?

时间:2019-04-09 16:06:09

标签: python

我已将变量转换为字符串,但是Python仍然无法识别该变量,并说该整数不可下标。

我已经尝试查看具有相同“整数不可下标”问题的其他问题,但是没有一个问题可以专门回答我的问题。

在错误发生之前,我已将变量明确转换为字符串。

 import random

 num = random.randint(1000, 9999)
 tot_correct = 0
 tot_tries = 0

 while tot_correct != 4:
     tot_correct = 0
     tot_tries += 1
     guess = input("Guess the number: ")
     guess = str(guess)
     #check 1st number
     if guess[0] == num[0]:
         tot_correct += 1

     #check 2nd number
     if guess[1] == num[1]:
         tot_correct += 1

     #check 3rd number
     if guess[2] == num[2]:
         tot_correct += 1

     #check 4th number
     if guess[3] == num[3]:
         tot_correct += 1
     print("You got " + tot_correct + " numbers right.")

print("You have guessed the number correctly! It took you " + tot_tries + "   tries.")

我希望该字符串成为一个字符串数组(但仍然不会,并返回相同的错误),然后确定单个数字是否已与该数字匹配

2 个答案:

答案 0 :(得分:4)

您的代码没有按照您的想法去做。现在,您正在输入一个数字,将其转换为字符串,并将该猜测字符串的第一个字符与无法索引的数字# Note: Substring search is case-sensitive here. [bool] $contains = $group.Where({ $_.Contains("string") }, 'First') 的第一个索引进行比较。

编辑: 您的代码实际上在做很多错误。您遇到的一个大问题是,您正在while循环中设置num[0],这意味着它将永远运行并且永远不会完成。

但是退后一步,我认为您使这个问题变得太复杂了。让我们来谈一谈我相信您正在尝试执行的伪代码。

tot_correct = 0

代码至少应使您了解如何解决问题而不为您解决。

答案 1 :(得分:1)

我谨不同意先前的评论。循环可能会结束。我了解您为什么在每个循环开始时将tot_correct设置为0。由于tot_correct最多增加4次,因此tot_correct == 4可能为true。

编辑:张贴者试图计算提供的正确位数。因此,如果要猜测的数字是“ 1234”,并且用户输入“ 1564”,则发布者希望代码返回“ 2”,以指示“ 1”和“ 4”是正确的数字。就像游戏策划者一样,玩家必须猜测正确的颜色和颜色的方向。但是,即使正确的数字位于正确的位置,该代码也不会通知用户是否添加了正确的数字。

但是,他说的很对,您的错误在于您对num[<index>]的访问。 num是整数,因此您无法对其进行索引,因此“整数不可下标”。 num必须是字符串才能对字符进行索引。

编辑:guess已经是一个字符串,没有调用str(),因为从input()返回的是一个字符串

要考虑的一些事情:您是否希望用户知道他们需要4位数字?如果添加了空格怎么办?当前,您的代码无法删除空格。如果您要查找“ 6543”作为幻数,而我输入的是“ 6543”,则您的解决方案将无法识别我的答案。