这是一个石头剪刀程序迷你游戏,但是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
我希望电脑能挑选石头、布或剪刀。它选择一个并保留该值,即使在循环之后也是如此。但是,它在每次执行时都会选择另一个值。
发布于 2019-06-02 22:38:22
请记住,在Python语言中使用==
比较字符串时,会进行精确的比较。这意味着在比较字符串时要考虑字母的大小写。例如,Scissors
和scissors
将被视为不相等。
我高度怀疑你所有的选择都是小写的。这意味着如果输入scissors
或paper
,用于检查玩家是否进入Scissors
的if
语句将不会执行。最终会发生的是,由于字符串比较的大小写敏感特性,您的循环将退出,因为您输入的内容不会被任何其他if
语句处理。这就是为什么rock
只执行而其他if
语句不执行的原因。
具体来说,请注意,在if
语句中,rock
是小写的,但Scissors
和Paper
的第一个字母是大写的。
因此,对于这种实现,请更改if
语句,使字符串实际上是小写的。
elif player == "paper":
if computer == "scissors":
...
...
elif player == "scissors":
if computer == "rock":
...
...
https://stackoverflow.com/questions/56419327
复制相似问题