-1

我的 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

谢谢你的帮助

4

3 回答 3

4

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

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

>>> '1' == 1
False

在比较它们之前,您应该将字符串对象转换为 int:

b = int(b)

顺便说一句,最好使用以下而不是while循环:

for i in range(int(b)):
    ...
于 2013-10-05T08:33:07.900 回答
3

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

利用

b = int(input('Enter number of beeps required'))
于 2013-10-05T08:33:04.397 回答
2

改变

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

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

您正在读取b字符串并将其与intin进行比较

if y == b:

这永远不会True。这就是您的代码无限循环的原因。

于 2013-10-05T08:33:01.040 回答