在模拟蒙蒂霍尔问题时,while 语句不起作用[重复]

问题描述 投票:0回答:1
 from random import randrange
 k=input("pick a door 0,1,2: ")
 h=(randrange(3))
 while h==k:
     if h!=k:
         break
     h=(randrange(3))
 print(h)

为什么这不会使 h 的输出始终与 k 的输出不同?

这是完整的代码:

from random import randrange
x=(randrange(3))
k=input("pick a door 0,1,2: ")
h=(randrange(3))
while h==k:
    if h!=k:
        break
     h=(randrange(3))
 print("I remove door")
 print(h)
 j=input("would you like to switch 1 if yes 2 if no: ")
 if j==0:
     if j==x:
         print("you win")
     else: 
         print("you lose")
 else: 
     if j!=x:
         print("you win")
     else: 
         print("you lose")
python while-loop
1个回答
0
投票

在您提供的代码中,存在如何比较变量 h 和 k 以及如何处理循环的问题。让我一步步解释吧。

首先,input()在Python 3.x中返回一个字符串。因此,当您在循环中比较 h 和 k 时,您是将字符串 (k) 与整数 (h) 进行比较。这不会按预期工作。

其次,循环逻辑不正确。你的循环应该继续下去,直到 h 与 k 不同,但是如果 h 不等于 k,你将立即中断循环,这意味着循环永远不会运行多次。

© www.soinside.com 2019 - 2024. All rights reserved.