Python循环没有结束的问题

时间:2013-10-05 08:29:04

标签: python python-3.x while-loop

我的python代码有一个问题就是发出哔哔声。 它只会发出无限循环的哔哔声,即使它应该停止。

import winsound
import time
z = 1
while z == 1:
    b = input('Enter number of beeps required')
    print(b)
    a = input('Is this number correct?')
    if a == "yes":
        print('Python shall use this number')
        z = 2
    if a == "no":
        b = input('Enter number of beeps required')
x = 1
y = -1
while x == 1: 
    freq = 1500
    dur = 50
    winsound.Beep(freq,dur)
    y += 1
    if y == b:
        x = 2

感谢您的帮助

3 个答案:

答案 0 :(得分:4)

如果您使用的是Python 3.x,input()将返回一个字符串对象。

将字符串对象与int进行比较始终返回False。

>>> '1' == 1
False

在比较之前,你应该将string对象转换为int:

b = int(b)
顺便说一下,最好使用以下代替while循环:

for i in range(int(b)):
    ...

答案 1 :(得分:3)

你的问题是Python 3上的input()返回一个字符串,因此b将是一个字符串,因此y == b永远不会是True

使用

b = int(input('Enter number of beeps required'))

答案 2 :(得分:2)

更改

b=input ('Enter number of beeps required')

b=int(input ('Enter number of beeps required'))

您正在将b作为字符串阅读,并将其与

中的int进行比较
if y == b:

永远不会是True。这就是为什么你的代码无限循环。