Python 而 True 定位混乱

Python while True positioning confusion

提问人:MoRayhxn 提问时间:11/10/2022 更新时间:11/10/2022 访问量:40

问:

我刚刚开始制作一个石头剪刀布程序,但我发现我尝试放置一段时间的 2 个位置 True: 命令具有完全相反的效果。我无法理解它背后的逻辑/推理,希望有人能够用简单的术语解释它。

代码的第一个副本是与第 3 行的 while True: 一起正常工作的代码副本。

代码的第二个版本是我首先用 while True 完成的:在第 6 行。

第二个版本导致游戏被无休止地打印,例如“你赢了”一百万次,而当 while True: 在第 3 行时,它按预期运行,赢/输或平局消息只打印一次。

有人可以解释为什么这样我理解以供将来参考。

import random
moves = "rock", "paper", "scissors"
while True:
    computer = moves[random.randint(0,2)]
    player = input("Choose rock, paper or scissors... Or 'end' to end the game: ")

    if player == "end":
        print("Game over!")
        break
    elif player == "rock" and computer == "scissors" or player == "scissors" and computer == "paper" or player == "paper" and computer == "rock":
        print("You win", player, "beats", computer)
    elif player == computer:
        print("Tie!")
    else: 
        print("You lose!", computer, "beats", player)
import random
moves = "rock", "paper", "scissors"

computer = moves[random.randint(0,2)]
player = input("Choose rock, paper or scissors... Or 'end' to end the game: ")
while True:
    if player == "end":
        print("Game over!")
        break
    elif player == "rock" and computer == "scissors" or player == "scissors" and computer == "paper" or player == "paper" and computer == "rock":
        print("You win", player, "beats", computer)
    elif player == computer:
        print("Tie!")
    else: 
        print("You lose!", computer, "beats", player)
python if-statement 布尔值逻辑

评论

0赞 jonrsharpe 11/10/2022
什么?为什么你认为移动到循环开始的地方不会改变行为?它从根本上改变了循环中的内容和循环外的内容。
1赞 kabooya 11/10/2022
在第二个程序中,您不会更改 player 的值,并且 al 到 elif/else 的情况不会中断,因此您连续保持该状态
0赞 Plagon 11/10/2022
该功能允许用户在 CLI 中输入内容,程序会中断,直到输入。由于已将其移出循环,因此永远不会再次提示用户。input
0赞 ShadowRanger 11/10/2022
次要说明:涉及将幻数(已知长度)硬编码到代码中,除非维护代码的人重新检查 .将其替换为 ,它没有这些问题(它准确地说明了您打算做什么,而不会以晦涩的方式重复信息,并且实际上使用了一种更有效的索引生成方法; 是基础指数生成的三层包装)。computer = moves[random.randint(0,2)]movesmovescomputer = random.choice(moves)randint

答: 暂无答案