Пока-l oop для игры в угадывание PIN - PullRequest
0 голосов
/ 08 марта 2020

Я создал функции, помогающие реализовать игру с угадыванием с 4 выводами, с временем l oop, которое говорит мне продолжать угадывать порядок последовательности, пока он не совпадет с сгенерированным PIN-кодом.

import random

def genListDigits():  # No.1 Generates a list with 4 random digits between 0 and 9.
    myList = []
    for i in range(0,4):
        x = random.randint(0,9)
        myList.append(x)
    return myList

b = genListDigits()

def convertToList():  # No.2 Receives my pin and converts it into a 4-digit list.
  convertedList = []
  for s in p:
    convertedList.append(int(s))
  return convertedList

p = input("Enter a 4-PIN code: ")
a = convertToList()
print('you entered', a)

def checkNumbers(guess,right):  # #No.3 Receives both lists, compares each element in order returns a string with 4 letters stating to go higher or lower
    result = ""
    for n in range(4): 
        if guess[n] == right[n]:
          result += "Y"
        elif guess[n] < right[n]:
            result += "H"
        elif guess[n] > right[n]:
            result += "L"
    return print(result)

checkNumbers(a,b)

Однако, когда Я добавляю, пока l oop не повторяет функцию convertToList ("Enter a 4-PIN code: "). Мое время l oop:

while a != b:
  q = input(convertToList())
print("Correct!")

Есть идеи, как это решить? Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 08 марта 2020

Во-первых, поместите свои определения наверху. В противном случае это трудно читать. Ваше время l oop должно начинаться до назначения p и заканчиваться контрольными номерами.

0 голосов
/ 08 марта 2020

Вы почти у цели. Вам просто нужно поместить p, a внутри while-l oop и проверить a == b, если true, сломать l oop и вывести «Правильное предположение!»

while True:
    p = input("Enter a 4-PIN code: ")
    a = convertToList()
    print("you entered", a)
    checkNumbers(a, b)
    if a == b:
        print("Correct guess!")
        break
...