Python程序要求输入两次,第一次不返回值

时间:2016-10-16 21:11:32

标签: python

这是我的代码,在get_response()函数中,如果输入'y'或'n',它首次表示无效,但第二次表示无效。
我该如何解决这个问题?

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()

3 个答案:

答案 0 :(得分:2)

answer != 'y' or answer != 'n':永远是真的; or应为and

答案 1 :(得分:0)

应为answer != 'y' and answer != 'n':

答案 2 :(得分:0)

您从逻辑上认为"答案不是和/或,而是在

的代码中
j

应用DeMorgans'你得到的规则

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

也许您应该使用answer != 'y' and answer != 'n' 进行重组。

您还想in

return answer