цикл с условием или условием - PullRequest
0 голосов
/ 11 июня 2018

во втором цикле пока я застрял и никогда не выберусь оттуда.как исправить?

def playGame(wordList):

new_hand = {}

choice = input('Enter n to deal a new hand, or e to end game: ')   
while choice != 'e':
    if choice == 'n':
        player_or_pc = input('Enter u to have yourself play, c to have the computer play: ')
        while player_or_pc != 'u' or player_or_pc != 'c':
            print('Invalid command.')
            player_or_pc = input('Enter u to have yourself play, c to have the computer play: ')                  
        if player_or_pc == 'u':
            print('player played the game')
        elif player_or_pc == 'c':
            print('PC played the game')
        choice = input('Enter n to deal a new hand, r to replay the last hand, or e to end game: ')
    else:
        print('Invalid command.')
        choice = input('Enter n to deal a new hand, r to replay the last hand, or e to end game: ')

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Заменить

while player_or_pc != 'u' or player_or_pc != 'c':

на

while player_or_pc != 'u' and player_or_pc != 'c':

В противном случае player_or_pc должно равняться u и c, и это невозможно.

0 голосов
/ 11 июня 2018

player_or_pc != 'u' or player_or_pc != 'c' равно всегда верно :

  • Если player_or_pc равно 'u', оно не равно 'c', поэтому одно из двух условийtrue
  • если player_or_pc равно 'c', оно не равно 'u', поэтому выполняется одно из двух условий
  • любое другое значение оба условия

Используйте and:

while player_or_pc != 'u' and player_or_pc != 'c':

или используйте ==, поставьте целое в скобках и используйте not перед:

while not (player_or_pc == 'u' or player_or_pc == 'c'):

В этот момент более понятно использовать членский тест:

while player_or_pc not in {'u', 'c'}:
...