首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >巨蟒岩,纸,剪刀游戏虫?

巨蟒岩,纸,剪刀游戏虫?
EN

Stack Overflow用户
提问于 2022-02-07 22:15:33
回答 1查看 82关注 0票数 0

我创建了我的第一个实用程序,但有些地方不对劲。如果我运行下面的代码,考虑到每一个可能的结果,我有时会得到错误的结果。例如,用户选择岩石,程序剪刀,结果是程序获胜,当它不应该。我是初学者,所以这可能是新手的错误。

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2022-02-07 22:40:54

与在单独的if/elif案例中检查每一种情况不同,系统地检查事物更容易(且不容易出错)。例如,考虑以下版本的(一轮)“岩石剪刀”计划作为替代方案。

代码语言:javascript
复制
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!")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71026113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档