嗯,我用python编写了我的剪刀代码,一切都很好,直到我努力使它变得更复杂。直到第28行,一切都很好,就像一个普通的剪刀游戏,但在那之后,我想说的是,对于“你想继续还是不想继续”这个问题,我们只有两个正确的答案,只要答案是肯定的,就返回整个游戏并重复它(顺便说一句,因为返回代码,我添加了一个def并将其称为RPS),如果用户的答案是否定的,就打断它并说再见,但当我运行代码时,我在终端中收到的唯一消息是“点击任何东西继续”。如果你知道答案,请帮助我
这是我的代码:
import random
def RPS():
while True:
user_action = input("Please enter rock, paper or scissor : ")
possible_actions = ["rock" , "paper" , "scissor"]
computer_action = random.choice(possible_actions)
if user_action == computer_action:
print(f"Your choice is same as your computer . . . It's a tie!!!")
elif user_action == "rock":
if computer_action == "scissor":
print(f"You Won!!! your choice was rock and the computer choice was scissor")
else:
print("Paper covers rock! You lose.")
elif user_action == "paper":
if computer_action == "rock":
print(f"You won!!! your choice was rock and the computer choice was rock")
else:
print("Scissors cuts paper! You lose.")
elif user_action == "scissor":
if computer_action == "paper":
print(f"You won!!! your choice was scissor and the computer choice was paper")
else:
print("Rock smashes scissor. You lose!!!")
play_again = input("Play again? (y/n): ")
possible_responses = {'y' , 'n'}
while possible_responses == play_again.lower():
if play_again.lower()=='y':
return(RPS)
else:
break
print(f"Alright. good bye")
1条答案
按热度按时间eoxn13cs1#
我修正了代码的缩进,并以正确的方式结束了循环。我认为问题在于,在第二个循环中使用了break命令,而没有结束第一个循环,该循环一直处于“True”状态。我通过重写第二个循环来解决这个问题,使连续输入无限循环,直到它识别出possible_responses集合中的答案。一旦这样,它就会打破第二个循环。
接下来,它检查play_again是否不是“y”。如果是,则结束整个函数。否则,它会再次循环。希望这有帮助!:D