如何从嵌套while循环中的random.choice获取不同的结果

时间:2019-06-02 22:15:55

标签: python random nested-loops

这是一个石头剪刀布程序迷你游戏,但是random.choice即使从嵌套循环中重复选择,也只能从列表中选择一个。

我尝试查看其他答案,但是其中大多数都声明使用循环,而其他答案不足以满足我的情况。

              rpsloop = True
              while rpsloop:
                  #credit to https://thehelloworldprogram.com/python/python-game-rock-paper-scissors/ for help
                  aiselc = ["rock","paper","scissors"]
                  computer = random.choice(aiselc)
                  print("type exit to leave")
                  player = input("rock, paper, scissors?")
                  if player == computer:
                    print("Tie!")
                    print("-------------------------")
                    continue
                  elif player == "rock":
                    if computer == "paper":
                     print("You lose!", computer, "covers", player)
                     print("-------------------------")

                     continue
                    else:
                     print("You win!", player, "smashes", computer)
                     print("-------------------------")
                     continue
                  elif player == "Paper":
                    if computer == "Scissors":
                     print("You lose!", computer, "cut", player)
                     print("-------------------------")
                     continue
                    else:
                     print("You win!", player, "covers", computer)
                     continue
                  elif player == "Scissors":
                    if computer == "Rock":
                     print("You lose...", computer, "smashes", player)
                     print("-------------------------")
                     continue
                    else:
                     print("You win!", player, "cut", computer)
                     print("-------------------------")
                     continue
                  else:
                       break
          else:
              break

我希望计算机可以捡石头,纸或剪刀。 它选择一个并在循环后仍保留该值。 但是每次执行都会选择另一个值。

1 个答案:

答案 0 :(得分:0)

请记住,比较字符串时在Python中使用==会进行精确比较。这意味着在比较字符串时会考虑字母的大小写。例如,Scissorsscissors将被视为彼此不相等。

我高度怀疑您将所有选择都以小写形式输入。这意味着,如果您要输入scissorspaper,则检查玩家是否输入if的{​​{1}}语句将不会执行。最终会发生的事情是,由于字符串比较区分大小写,其他任何Scissors语句都不会处理您输入的内容,因此循环将退出。这就是为什么if仅执行而其他rock条语句均不执行的原因。

请特别注意,在您的if语句中,if是小写字母,但是rockScissors的首字母大写。

因此,鉴于此实现,请更改您的Paper语句,以使字符串实际上是小写。

if