Как вы используете переменную в качестве индекса при нарезке целых чисел в Python?

#python

#python

Вопрос:

итак, я изучаю программирование (python, сообщество Visual studio) и пытаюсь написать игру на python, и лучший способ описать ее — mastermind (выбранная длина чисел генерируется случайным образом, вы угадываете, и она сообщает вам, есть ли правильные числа в правильной позиции, но не в какой позиции они находятсяв) кажется, что все остальное в этом работает до сих пор, кроме того факта, что, поскольку эта программа сможет выполнять бесконечную длину, я должен проверять эти числа, используя переменную, которая увеличивается на 1 каждый раз if guess[y]==randomnumber[y]: , каждый раз, когда я запускаю это, я получаю сообщение об ошибке:»объект’int’не подписывается «. вот полный код:

 length=int(input("what length do you want: "))
import random
if length==0:
    length=int(input("what length do you want: "))
if length!=0:
    x=0
    while x!=length:
        randomnumber=[int(random.randint(0,9))]
        x=x 1
    x=0
    game_over=0
    while game_over==0:
        guess=int(input("your guess:    "))
        y=0
        round_score=0
        y=int(y)
        while y!=length:
            if guess[y]==randomnumber[y]:
                round_score=round_score 1
            y=y 1
        if round_score==length:
            game_over=1
  

Комментарии:

1. guess это an int , а не a list .

2. Чего вы надеетесь достичь с [y] помощью in guess[y] ? Кроме того, что вы надеетесь сделать с y=int(y) when y уже является целым числом? В общем, вы должны иметь возможность привязывать цель ко всему, что вы вводите в программе, но в этом случае вы, похоже, вводите код, который не имеет какой-либо очевидной цели.

3. Что здесь происходит: randomnumber=[int(random.randint(0,9))] ? По сути, вы создаете список с одним случайным числом пару раз ( length ). Вы, вероятно, хотите собрать их в list длину length .

4. В названии вашего вопроса говорится о том, как нарезать целые числа, но «нарезка целых чисел» на самом деле не имеет смысла. Целые числа — это не то, что можно нарезать в Python. Это может помочь, если вы объясните, что вы имели в виду под нарезкой целых чисел.

5. Может быть, не по теме, но я думаю, вы имели в виду while length==0: вместо if length==0 , в строке 3, потому что вы хотите продолжать спрашивать, равна ли длина 0, а не только один раз

Ответ №1:

Вы хотите преобразовать предположение в список целых чисел.

Получить ввод в виде строки:

 guess = input("your guess: ")
  

Последовательность символов (она же строка) в список int:

 guess = [int(c) for c in guess]
  

Это можно было бы записать в одну строку, но я думаю, что так будет понятнее.