Я создаю свое собственное угадываемое имя, но программа не запускается

#python

#python

Вопрос:

Что я могу делать неправильно в этой программе? Недавно я начал с Python.

 ##number guesser generator
import random


def main():


    print("welcome to the number guessing game!")


    print("You will receive three guesses!")

    print("Choose a number between 1 and 100")

    randomnumbergenerator()

    userinput()

    winorlose()






def randomnumbergenerator():
    
random.seed(0)
   
 randomnumber = random.randint(1,100)

    return randomnumber



def userinput():
 
   answer1 = int(input('what is your 1st guess?'))

    answer2 = int(input('what is your 2nd guess?'))

    answer3 = int(input('what is your 3rd guess?'))



    answers = answer1, answer2, answer3
    return answers

def winorlose(randomnumber, answers):

    while randomnumber != answers:

        print('You lose! The correct answer equals'   randomnumber)

        if randomnumber == answers:

            print("You picked the correct answer! The answer was "   randomnumber)

    return winorlose()
  

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

1. Вы когда-нибудь вызываете main ? Это не специальная функция, как в других языках. Оно не вызывается автоматически.

2. def main() это просто обычная функция, как и другие. вы должны запустить свою программу с помощью __name__ == "__main__" check или просто вызвать main() метод напрямую.

Ответ №1:

Функция main — это просто еще одна обычная функция. В Python нет понятия «основной» функции. Вам нужно вызвать main() функцию вручную, вот так

 # Check if file was executed as the "main" file
# This is optional, but it ensures that if you import this file as a module,
# the main function isn't invoked
if __name__ == "__main__":
    main() # Call the main function
  

Ответ №2:

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

На данный момент программа просто выполняется и создает все функции, готовые к вызову экземпляров, но вы вызвали их в рамках основной функции, которая сама по себе не вызывается. Если бы вы должны были сделать что-то вроде этого:

 class randomGenerator():
    def __init__(self):
        self.main()

    def main(self):

        print("welcome to the number guessing game!")


        print("You will receive three guesses!")

        print("Choose a number between 1 and 100")

        self.randomnumbergenerator()

        self.userinput()

        self.winorlose()

    def randomnumbergenerator(self):

        random.seed(0)

        randomnumber = random.randint(1,100)

        return randomnumber

    def userinput(self):

        answer1 = int(input('what is your 1st guess?'))

        answer2 = int(input('what is your 2nd guess?'))

        answer3 = int(input('what is your 3rd guess?'))



        answers = answer1, answer2, answer3
        return answers

    def winorlose(self, randomnumber, answers):

        while randomnumber != answers:

            print('You lose! The correct answer equals'   randomnumber)

            if randomnumber == answers:

                print("You picked the correct answer! The answer was "   randomnumber)

        return winorlose()


run = randomGenerator()
  

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