Skip to main content
 首页 » 编程设计

python之陷入无限循环

2025年05月04日12shihaiming

我正在尝试用 Python 编写一个程序,将十进制数转换为等效的十六进制数。当我运行该程序时,它为我提供了正确的转换,但它在无限循环中运行。我不确定无限循环到底发生在哪里。这是我的代码:

def remainderToHex(remainder): 
    if remainder <= 9: 
        remainder = str (remainder) 
    elif remainder == 10: 
        remainder = "A" 
    elif remainder == 11: 
        remainder = "B" 
    elif remainder == 12: 
        remainder = "C" 
    elif remainder == 13: 
        remainder = "D" 
    elif remainder == 14: 
        remainder = "E" 
    elif remainder == 15: 
        remainder = "F" 
    return remainder 
 
def decToHex(decNum): 
    hexNum = "" 
    quotient = decNum 
    divNum=16 
    if quotient == 0: 
        hexNum = 0 
    while quotient > 0: 
        remainder = quotient % divNum 
        convertedHex= remainderToHex(remainder) 
        quotient = int (quotient / divNum) 
        hexNum = convertedHex + hexNum  
    return hexNum 
 
def main(): 
    decNum=int(raw_input("Please enter a non negative number OR enter -1 to quit: ")) 
    while decNum >= -1: 
        hexNumber = decToHex(decNum) 
        print decNum, "convered to hex is: ", hexNumber 
    print "Thank you"  

谢谢!

请您参考如下方法:

您正在执行 while decNum >= -1。假设用户没有立即输入 -1,那么 decNum 将永远变得小于 -1,while 循环将永远不会结束。相反,使用 if 语句。如果用户输入 -1,则结束该过程,否则进行转换。

正如已经指出的那样,>= 应该是 >