Member 13672432 Ответов: 2

Как я могу сократить этот код? (Python 3.3)


Я закончил небольшой фрагмент кода для проекта под названием Codebreaker, где генерируется число, и нужно угадать. Ваша догадка сравнивается с сгенерированным массивом под названием "Код". В настоящее время часть, которую я запрограммировал, заключается в том, что программа выводит количество правильных цифр в неправильном месте в вашем предположении. Есть ли способ сократить это или превратить в подпрограмму?

if guess1== code[1]:
    wronPlace= (wronPlace+1)
if guess1== code[2]:
    wronPlace= (wronPlace+1)
if guess1== code[3]:
    wronPlace= (wronPlace+1)

if guess2== code[0]:
    wronPlace= (wronPlace+1)
if guess2== code[2]:
    wronPlace= (wronPlace+1)
if guess2== code[3]:
    wronPlace= (wronPlace+1)

if guess3== code[0]:
    wronPlace= (wronPlace+1)
if guess3== code[1]:
    wronPlace= (wronPlace+1)
if guess3== code[3]:
    wronPlace= (wronPlace+1)

if guess4== code[0]:
    wronPlace= (wronPlace+1)
if guess4== code[1]:
    wronPlace= (wronPlace+1)
if guess4= code[2]:
    wronPlace= (wronPlace+1)


Что я уже пробовал:

Я пытался превратить его в подпрограмму или сократить вручную, но безуспешно. Кто-нибудь может помочь?

2 Ответов

Рейтинг:
2

Patrice T

Не короче, но может быть отлажен:

if guess4== code[0]:
    wronPlace= (wronPlace+1)
if guess3== code[1]:
    wronPlace= (wronPlace+1)
if guess3== code[2]:
    wronPlace= (wronPlace+1)

Вы уверены насчет этого guess3 в этой части?

[Обновление]
Цитата:
Guess1 Guess2 Guess3 и Guess4-это четыре цифры, которые я разделил на догадки. Их нужно сравнить с четырьмя сгенерированными цифрами

Внимательно прочитайте свой код!
вы проверьте guess1 3 раза,
тогда вы проверяете guess2 3 раза,
тогда вы проверяете guess3 3 раза,
в этот момент можно ожидать, что вы проверите guess4 3 раза но,
вы проверьте guess4 1 раз и guess3 2 раза.
Это то, чего ты хочешь?

[Обновление]
Цитата:
Codebreaker: это игра, в которой вы угадываете 4 цифры кода. Он выводит количество правильных цифр в правильном месте и количество правильных цифр в неправильном месте. Код хранится в виде массива. У вас есть 12 попыток угадать код

ОК. Таким образом, ваш код явно ошибочен, потому что вы не справляетесь, когда в коде или догадках есть 2 одинаковых цифры.
Пример: код-1123, а предположение-3211, ваша программа скажет, что есть 6 неправильно расположенных цифр.
Вы должны переосмыслить логику.


Member 13672432

Guess1 Guess2 Guess3 и Guess4-это четыре цифры, которые я разделил на догадки. Их нужно сравнить с четырьмя сгенерированными цифрами

Patrice T

см. раздел Обновление решения.

Member 13672432

Спасибо, что пропустил это.

Patrice T

кстати, не могли бы вы объяснить, что должна делать вся программа?

Member 13672432

Codebreaker: это игра, в которой вы угадываете 4 цифры кода. Он выводит количество правильных цифр в правильном месте и количество правильных цифр в неправильном месте. Код хранится в виде массива. У вас есть 12 попыток угадать код

Patrice T

См. второе обновление решения.

Рейтинг:
1

Richard MacCutchan

Используйте массивы или списки: 5. структуры данных — документация Python 3.4.8[^].


Member 13672432

Массив уже был использован

Richard MacCutchan

Тогда почему это не работает?

Member 13672432

Правильно ли вы прочитали вопрос и фрагмент кода? https://www.codeproject.com/Questions/1229708/How-can-I-change-this-code-to-give-the-desired-res

Richard MacCutchan

Почему вы перепостили этот вопрос?

Member 13672432

Мой вопрос другой и из за вас на него не было ответа и никогда не будет

Richard MacCutchan

ppolymorphe дал вам ответ выше.

Member 13672432

Как удалить вопрос с сайта, где нет смысла даже просить о помощи?