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

文字列として読み取り、それをinbと比較していますint

if y == b:

これは決してありませんTrue。それが、コードが無限にループしている理由です。

于 2013-10-05T08:33:01.040 に答える