而python中的条件进入无限循环

时间:2014-07-03 23:22:01

标签: python

只是想知道是否有人可以帮我解决一个小问题。当我将startNum与常量(startNum< 11)进行比较时,while条件正常工作,但当我与endNum进行比较时,它会进入无限循环。我很想知道我在这里做错了什么?

下面的代码片段
startNum = 1
endNum = raw_input('please enter the end number')
def main():

        print startNum
        print endNum
        sumNatural()
        print listNumBoth
        print listNumThree
        print listNumFive




def sumNatural():

    global startNum
    global endNum
    print startNum
    print endNum

    while startNum < endNum:
        listNumThree=[]

        listNumBoth=[]
        listNumFive=[]
        #startNum=1
        #endNum=raw_input('please enter the end number')
        startNum = startNum+1
        print 'StartNUM ',startNum,'EndNum ',endNum
        if startNum%3==0 and startNum%5==0:
            listNumBoth.append(startNum)

        elif startNum%3==0:
            listNumThree.append(startNum)
        elif startNum%5==0:
            listNumFive.append(startNum)
        else:
            print 'number not divisible',startNum
    else:
        print 'while loop ended'

main()

3 个答案:

答案 0 :(得分:1)

endNum是一个字符串,startNum是一个数字....

你的问题应该在这里......

尝试使用int(endNum)将输入字符串解析为数字。

答案 1 :(得分:1)

raw_input会返回一个字符串,因此您不会进行您认为正在进行的整数比较。

endNum转换为整数:

endNum = int(raw_input('please enter the end number'))

答案 2 :(得分:1)

raw_input将返回一个非整数字符串。您需要将其转换为整数值:

while True:
    endNum = raw_input('please enter the end number')
    try:
        endNum = int(endNum)
        break
    except ValueError:
        print "Please enter a valid number"