我是一个非常新的程序员,并且已经使用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
答案 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
仍然有效。