正确循环和中断
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... except
在 while
循环之外,这可能就是 break
代码没有中断 while 循环的原因。
第二 - 编码风格(避免以后出现类似问题)
你的函数定义应该在循环之外。循环的目的是调用这些函数。
如果你知道执行前的迭代次数并且它不依赖于程序状态,为什么不使用for循环呢?
这将帮助您避免无限循环。
请尽量避免使用try...except
机制作为流量控制结构。 仅如果必须且仅当您需要错误处理的特殊情况时才这样做。
你没有更新 tries
变量,所以除了 ValueError
你认为循环应该结束的原因是什么?
我想正确地循环并破解这段代码。这可以很好地循环但不会正确终止
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... except
在 while
循环之外,这可能就是 break
代码没有中断 while 循环的原因。
第二 - 编码风格(避免以后出现类似问题)
你的函数定义应该在循环之外。循环的目的是调用这些函数。
如果你知道执行前的迭代次数并且它不依赖于程序状态,为什么不使用for循环呢? 这将帮助您避免无限循环。
请尽量避免使用try...except
机制作为流量控制结构。 仅如果必须且仅当您需要错误处理的特殊情况时才这样做。
你没有更新 tries
变量,所以除了 ValueError
你认为循环应该结束的原因是什么?