【问题标题】:how to exit infinte while loop in the basic hangman question如何在基本刽子手问题中退出无限循环
【发布时间】:2021-12-30 23:06:06
【问题描述】:

您好,所以我在编程方面完全是个菜鸟,为了加强我的实践,我尝试做一个刽子手项目(不是使用 GUI 的典型刽子手)。 先决条件 字典、元组、循环(包括循环的嵌套)、if-else 语句和 python 中的随机函数 面临的问题 while 循环不起作用。它运行完美,直到结束,然后它不会退出 while 循环和(打印耶!!你赢了)。它停留在while循环中(我已经设置了一个无限循环)并说“输入一个字符”并拒绝退出循环。请调试我的代码或建议对其进行更改,以便在猜到正确的单词后退出 while 循环。为方便起见,我只上传代码的症结(我遇到问题的地方,请随时在您的控制台中运行代码)

    import random
    store=""
    d=input("ENTER START: ")
    p=d.lower()
    sb={"fruits":("strawberry","banana","apple","orange","guava","grapes"),"colours":("red","blue","orange","brown","yellow"),"cars":("maruti","nano","ferrrari","audi","jaguar")}
    keys=list(sb)
    for i in range(len(keys)):
        f=random.randint(0,len(keys)-1)
        j=keys[f]
        q=sb[j]
        r=random.randint(0,len(q)-1)
        x=q[r]
    print(x)
    if p!="start":
        cc=input("Enter the CORRECT command in pls: ")
        store=cc.lower()
    if p=="start" or cc=="start":
        print("HINT 1:ok so I have chosen",j+"!!!\n and you have",len(x)+2,"chances to guess")
        for i in range(len(x)+2):
                term=x
                query = []
                flag = 0 
                chance=0
                while True:
                    query.append(input("Enter the letter: ").lower())
                    output = " ".join([x if x in query else "_" for x in term.lower()])
                    print(output)
                    flag += 1 if query[-1] in term.lower() else 0
                    chance+=1
                    query = list(set(query))
                    if flag == len(set(term)) or chance==len(term)+2:
                        print("YIKES!!you won!!!")
                        break 

【问题讨论】:

    标签: python random while-loop infinite-loop break


    【解决方案1】:

    ˙breakleaves thewhile True:loop, but you'll find yourself in thefor i in range(len(x)+2):loop again. Youroutputis nicely written, butflag += 1 if query[-1] in term.lower( ) else 0` 是错误的:如果我输入相同的匹配字母,它会说我赢了,即使我没有。示例:

    ENTER START: start
    orange
    HINT 1:ok so I have chosen colours!!!
     and you have 8 chances to guess
    Enter the letter: o 
    o _ _ _ _ _
    Enter the letter: o 
    o _ _ _ _ _       
    Enter the letter: o
    o _ _ _ _ _       
    Enter the letter: o
    o _ _ _ _ _       
    Enter the letter: o
    o _ _ _ _ _       
    Enter the letter: o
    o _ _ _ _ _      
    YIKES!!you won!!!
    

    在此之后,您的解释器从最后一个 for 循环开始,其中 i=1。

    为了使检查更容易,您还可以为随机指定种子,这样您将得到相同的选择。为此,请在第一行之后插入 random.seed(0),并将 0 更改为您(或用户)想要的任何内容。

    为了更好地了解您的程序是如何工作的,a debugger 可以提供很好的见解。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-07
      相关资源
      最近更新 更多