我已将变量转换为字符串,但是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.")
我希望该字符串成为一个字符串数组(但仍然不会,并返回相同的错误),然后确定单个数字是否已与该数字匹配
答案 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”,则您的解决方案将无法识别我的答案。