Я хочу, чтобы моя программа на Python зациклилась без использования функции - PullRequest
0 голосов
/ 19 ноября 2018

Я работаю над игрой в крестики-нолики. Я сделал, но я хочу, чтобы он снова зациклился, если пользователь спросит об этом. Проблема в том, что я помещаю его в основную функцию и делаю отступ. Некоторые переменные больше не определены, и это не работает! Они делают, когда он не находится под функцией main (). Эти ошибки не возникнут. Кто-нибудь знает, как зациклить программу, не используя функцию, или помочь исправить мой код. Например:

def main():
    #My code here
#Ouput:
  File "CandT.py", line 205, in <module>
  main()
  File "CandT.py", line 203, in main
  run()
  File "CandT.py", line 188, in run
  runX()
  File "CandT.py", line 163, in runX
  askX()
  File "CandT.py", line 59, in askX
  check_stringX(x = s1)
  NameError: name 's1' is not defined

Полный код здесь: https://pastebin.com/iGcqGkRe

1 Ответ

0 голосов
/ 19 ноября 2018

Создайте цикл while следующим образом.

def run()
    clear()
    #check_win() should return true if there is a winner or false if not
    while(check_win()==False): #if there is nobody win, continue this loop
        if turn == 0: # X's move
            runX()
            turn = 1 # the next turn will be O's
        elif turn == 1: # O's move
            runO()
            turn = 0 # the next turn will be O's

    #here after the loop, we check for the winner
    if(turn == 0):
        winner = O #because the last move is O's
    else:
        winner = X

def clear():
#reset all variables here

if __name__ == "__main__": #maybe you miss this line 
    while(True):
        play_again = int(input("play again? 1: OK, 0: No"))
        if play_again == 1:
            run()
        else:
            break
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...