正确循环和中断

Loop and break correctly

我想正确地循环并破解这段代码。这可以很好地循环但不会正确终止

from random import randint
import pyttsx

tries = 10
while tries:
    try:
        def random_with_N_digits(n):
            range_start = 10**(n-1)
            range_end = (10**n)-1
            return randint(range_start, range_end)

        randoms = random_with_N_digits(3)
        def speech_recog():
            engine = pyttsx.init()
            engine.say(randoms)
            engine.runAndWait()

        speech_recog()

        def guesses():
            my_guess = raw_input("Enter ")
            count_correct = 0
            count_wrong = 0
            if my_guess == randoms:
                print("correct")
                count_correct +=1
            else:
                count_wrong +=1
    except ValueError:
        break
    guesses() 
print("You got right", count_correct)
print("You got wrong", count_wrong)
#print("Your correct ratio is", count_correct / count_wrong)
print("While loop has exited")  

提前感谢您的帮助

要事第一 - 你的问题

您的 try... exceptwhile 循环之外,这可能就是 break 代码没有中断 while 循环的原因。

第二 - 编码风格(避免以后出现类似问题)

你的函数定义应该在循环之外。循环的目的是调用这些函数。

如果你知道执行前的迭代次数并且它不依赖于程序状态,为什么不使用for循环呢? 这将帮助您避免无限循环。

请尽量避免使用try...except机制作为流量控制结构。 如果必须且仅当您需要错误处理的特殊情况时才这样做。

你没有更新 tries 变量,所以除了 ValueError 你认为循环应该结束的原因是什么?