我创建了我的第一个实用程序,但有些地方不对劲。如果我运行下面的代码,考虑到每一个可能的结果,我有时会得到错误的结果。例如,用户选择岩石,程序剪刀,结果是程序获胜,当它不应该。我是初学者,所以这可能是新手的错误。
starter = True
while starter:
import random
user_input = input("Choose Rock, Paper or Scissors: ")
choice = ["Rock", "Paper", "Scissors"]
choice_lower = ["rock", "paper", "scissors"]
program_choice = random.choice(choice)
while user_input not in choice or user_input in choice_lower:
if user_input in choice or user_input in choice_lower:
break
else:
user_input = input("Invalid input! Choose Rock, Paper or Scissors: ")
continue
if user_input == program_choice or user_input == program_choice.lower():
print(f"You chose: {user_input}")
print(f"It's a draw! The computer chose {program_choice} too!")
elif user_input == "Rock" or user_input == "rock" and program_choice == "Paper":
print(f"You chose: {user_input}\nThe program chose: {program_choice}\nThe program won!")
elif user_input == "Paper" or user_input == "paper" and program_choice == "Rock":
print(f"You chose: {user_input}\nThe program chose: {program_choice}\nYou won!")
elif user_input == "Scissors" or user_input == "scissors" and program_choice == "Paper":
print(f"You chose: {user_input}\nThe program chose: {program_choice}\nYou won!")
elif user_input == "Rock" or user_input == "rock" and program_choice == "Scissors":
print(f"You chose: {user_input}\nThe program chose: {program_choice}\nYou won!")
elif user_input == "Paper" or user_input == "paper" and program_choice == "Scissors":
print(f"You chose: {user_input}\nThe program chose: {program_choice}\nThe program won!")
elif user_input == "Scissors" or user_input == "scissors" and program_choice == "Rock":
print(f"You chose: {user_input}\nThe program chose: {program_choice}\nThe program won!")
keep_going = input("Do you wanna play again? (Yes/No): ")
answers = ["Yes", "yes", "No", "no"]
while keep_going not in answers:
keep_going = input("Invalid input! Do you wanna play again? (Yes/No): ")
continue
if keep_going == "Yes" or keep_going == "yes":
continue
else:
starter = False发布于 2022-02-07 22:40:54
与在单独的if/elif案例中检查每一种情况不同,系统地检查事物更容易(且不容易出错)。例如,考虑以下版本的(一轮)“岩石剪刀”计划作为替代方案。
import random
choice =["rock", "paper", "scissors"]
lose = [(choice[i],choice[(i+1)%3]) for i in range(3)]
# equivalent: lose = [("rock","paper"),("paper","scissors"),("scissors","rock")]
program_choice = random.choice(choice)
# print(program_choice) # useful if you want to cheat
while True:
user_input = input("Choose Rock, Paper or Scissors: ").lower()
if user_input in choice:
break
else:
print("Invalid Input!")
print(f"You chose: {user_input}\nThe program chose: {program_choice}")
if user_input==program_choice:
print("It\'s a draw!")
elif (user_input,program_choice) in lose:
print("The program won!")
else:
print("You won!")https://stackoverflow.com/questions/71026113
复制相似问题