使用input()退出

时间:2016-04-21 17:39:46

标签: python loops user-input

我是一个非常新的程序员,并且已经使用Python 3几周了。我尝试制作一个神奇的8球计划,你可以得到一个问题的答案,并询问你是否想再次参加比赛。但无论我输入什么,它都不会退出并保持循环。我不确定我做错了什么。任何帮助是极大的赞赏!

#Magic 8 Ball V2
import random
import time

class Magic8ball:

    def __init__(self, color):
        self.color = color

    def getanswer(self):
        responselist = ['The future looks bright!', 'Not too good...', 'Its a fact!',
                        'The future seems cloudy', 'Ask again later', 'Doesnt look too good for you',
                        'How would i know?', 'Maybe another time']
        cho = random.randint(0, 7)
        print ('Getting answer...')
        time.sleep(2)
        print (responselist[cho])

purple = Magic8ball('Purple')
blue = Magic8ball('Blue')
black = Magic8ball('Black')

while True:
    print ('Welcome to the magic 8 ball sim part 2')
    input('Ask your question:')
    black.getanswer()
    print ('Would you like to play again?')
    choice = ' '
    choice = input()
    if choice != 'y' or choice != 'yes':
        break

2 个答案:

答案 0 :(得分:1)

使用sys.exit()退出shell。

另外,正如@jonrsharpe所说,你想要and而不是or在这一行:

if choice != 'y' or choice != 'yes':

这是因为如果用户提供'y',程序将执行两项检查:首先,它检查choice != 'y'是否为假。然后,因为您使用的是or,它会检查choice != 'yes'是否为 true 。因此,无论用户输入什么,程序都会跳出while循环。

答案 1 :(得分:0)

您的代码有三个问题:

<强> 1)

choice = ' '
choice = input()

不需要第一行,你立即将其覆盖。

<强> 2)

print ('Would you like to play again?')
choice = input()

取而代之的是,只使用input("Would you like to play again?")

第3) if choice != 'y' or choice != 'yes':行上的逻辑是错误的。

在我看来,如果你这样做会更好:

if choice not in ("y", "yes"):

这会让你很清楚你想要做什么。

此外,您可能只想考虑使用choice.lower()以方便用户。因此Yes仍然有效。