为了账号安全,请及时绑定邮箱和手机立即绑定

为什么这段代码会产生错误“int is not subscriptable”?

为什么这段代码会产生错误“int is not subscriptable”?

缥缈止盈 2022-01-05 10:39:08
我已将变量转换为字符串,但是 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 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

您的码没有按照您的想法行事。现在您正在输入一个数字,将其转换为字符串并将该猜测字符串的第一个字符与不可索引的数字的第一个索引进行比较num[0]。


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


但是退一步说,我认为你把这个问题弄得太复杂了。让我们谈谈我相信你正在尝试做的伪代码。


num_guessed = 0

number_to_guess = 4

total_guesses = 0

while num_guessed < number_to_guess:

    # each pass we reset their guess to 0 and get a new random number

    guess = 0

    # get a new random number here

    while guess != random:

        # have a user guess the number here

        total_guesses += 1 # we can increment their total guesses here too

        # it would be a good idea to tell them if their guess is higher or lower

        # when they guess it right it will end the loop


    num_guessed += 1


# down here we can tell them game over or whatever you want

代码至少应该让您了解如何在不为您解决问题的情况下解决问题。


查看完整回答
反对 回复 2022-01-05
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

我恭敬地不同意之前的评论。循环有可能结束。我明白你为什么tot_correct在每个循环开始时设置为 0。因为tot_correct最多增加 4 次,所以有可能为tot_correct == 4真。

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

但是,他是正确的,您的错误在于您对num[<index>]num是一个整数,因此您无法对其进行索引,因此“整数不可下标”。num需要是一个字符串才能对字符进行索引。

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

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


查看完整回答
反对 回复 2022-01-05
  • 2 回答
  • 0 关注
  • 161 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信