Как «закончить» код, чтобы он не просто продолжал работать - PullRequest
0 голосов
/ 24 декабря 2018

Я пытаюсь сделать классную игру с Python.Ниже мой код.Я не могу понять, как закончить игру, то есть, когда выбрано «N», я получаю бесконечное повторение финального отпечатка (то есть «Надеюсь, вам понравилось играть в кости. Хорошего дня!»)

import random
import time
player = random.randint(1,6)
ai = random.randint(1,6)
cont = str(input('Roll the dice? Y/N'))
while cont == "Y":
    print ("You are rolling...")
    time.sleep(3)
    print ("You rolled " + str(player))
    print("The computer rolls...." )
    time.sleep(3)
    print ("The computer rolled " + str(ai))
    if player > ai:
        print("You win")
    if ai > player:
        print("You lose")
    cont2 = str(input('Would you like to play again? Y/N'))
while cont != "Y" or cont2 != "Y":
    break
print ("I hope you enjoyed playing dice. Have a great day!")

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018
 import random                                                                  
 import time                                                                    
 cont = str(input('Roll the dice? Y/N'))                                        
 while cont == "Y":                                                             
    player = random.randint(1,6)                                               
    ai = random.randint(1,6)                                                   
    print ("You are rolling...")                                               
    time.sleep(3)                                                              
    print ("You rolled " + str(player))                                        
    print("The computer rolls...." )                                           
    time.sleep(3)                                                              
    print ("The computer rolled " + str(ai))                                   
    if player > ai:                                                            
        print("You win")                                                       
    if ai > player:                                                            
        print("You lose")                                                      
    cont2 = str(input('Would you like to play again? Y/N'))                                                                                                    
    if cont2.lower() == 'y':                                                   
        cont == "Y"                                                            
    elif cont2.lower() == 'n':                                                 
        cont == "N"                                                            
        break                                                                  
 print ("I hope you enjoyed playing dice. Have a great day!"

Просто для того, чтобы сделать ваш код более надежным, я включил значения костей в цикле while.Во-вторых, вы можете избавиться от второго цикла while с помощью if--else, чтобы сделать ваш код более читабельным и понятным.

0 голосов
/ 24 декабря 2018

Если вы назначаете следующий пользовательский ввод cont2, вы можете просто переназначить cont.Это прервет цикл while, если пользователь нажмет «N».Тогда вам больше не понадобится второй цикл while.

Редактировать: Как сказал Дэниел выше, ваш код nog всегда дает один и тот же бросок компьютерных кубиков.Yoy должен изменить строку ai внутри цикла while.

import random
import time
player = random.randint(1,6)
# remove ai = random.randint(1,6) here
cont = str(input('Roll the dice? Y/N'))
while cont == "Y":
    print ("You are rolling...")
    time.sleep(3)
    print ("You rolled " + str(player))
    print("The computer rolls...." )
    ai = random.randint(1,6) # <-- add here again
    time.sleep(3)
    print ("The computer rolled " + str(ai))
    if player > ai:
        print("You win")
    if ai > player:
        print("You lose")
    cont = str(input('Would you like to play again? Y/N')) # <-- this line is changed

print ("I hope you enjoyed playing dice. Have a great day!")

Вы также можете сделать его более устойчивым для данного пользовательского ввода, добавив .upper() после ввода.Итак: cont = str(input('Roll the dice? Y/N')).upper().Если пользователь затем введет «y» вместо «Y», он все равно будет работать.

...