2016-10-16 6 views
-2

get_response()関数では、「y」または「n」を入力すると、最初は無効と表示されますが、時間。
これを修正するにはどうすればよいですか?Pythonプログラムは入力を2回要求しますが、最初に値を返しません

import random 

MIN = 1 
MAX = 6 

def main(): 

    userValue = 0 
    compValue = 0 

    again = get_response() 

    while again == 'y': 
     userRoll, compRoll = rollDice() 
     userValue += userRoll 
     compValue += compRoll 
     if userValue > 21: 
      print("User's points: ", userValue) 
      print("Computer's points: ", compValue) 
      print("Computer wins") 
     else: 
      print('Points: ', userValue, sep='') 
     again = get_response() 

    if again == 'n': 
     print("User's points: ", userValue) 
     print("Computer's points: ", compValue) 
     if userValue > compValue: 
      print('User wins') 
     elif userValue == compValue: 
      print('Tie Game!') 
     else: 
      print('Computer wins') 


def rollDice(): 

    userRoll = random.randint(MIN, MAX) 
    compRoll = random.randint(MIN, MAX) 
    return userRoll, compRoll 

def get_response(): 

    answer = input('Do you want to roll? ') 

    if answer != 'y' or answer != 'n': 
     print("Invalid response. Please enter 'y' or 'n'.") 
     answer = input('Do you want to roll? ') 

main() 
+0

に' = 'n' をお勧めします。それは 'y'ではなく、 'n'でもない。 – zvone

+0

第2の問題:あなたは決して返答を返しませんでした –

答えて

2

answer != 'y' or answer != 'n':は常にtrueです。 orandである必要があります。

+0

または 'yn'_ – volcano

+1

@ volcanoの回答がありませんそれはynが有効な入力になります –

+0

@ cricket_007、あなたは正しい、_答えていない(' y ' 'n')_ – volcano

0

それはanswer != 'y' and answer != 'n':

0

あなたは論理的に"答えはyのではありませんまたはN"が、

not (answer == 'y' or answer == 'n') 

がDeMorgans'ルールを適用されたコードで、あなたが

を得ることを考えているべきです
answer != 'y' and answer != 'n' 

おそらくinを使用して再構成する必要があります。 !! `常に真です:

はまた答え= 'Y' またはが答えるとreturn answer

def get_response(): 
    while True: 
     answer = input('Do you want to roll? ') 

     if answer not in {'y', 'n'}: 
      print("Invalid response. Please enter 'y' or 'n'.") 
     else: 
      return answer 
関連する問題