循环并正确打破

时间:2017-07-22 11:21:28

标签: python loops break

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

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")  

提前感谢您的帮助

2 个答案:

答案 0 :(得分:0)

首先要做的事 - 你的问题

您的try... except超出while循环,这可能是break代码不会破坏while循环的原因。

第二种 - 编码风格(避免类似问题)

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

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

请尽量避免使用try...except机制作为流控制结构。如果必须,只有当您需要特殊的错误处理案例时才

答案 1 :(得分:0)

您没有更新tries变量,因此除了ValueError之外,为什么您认为循环应该结束?