我正在尝试在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"
Run Code Online (Sandbox Code Playgroud)
谢谢!
你在做while decNum >= -1.假设用户没有输入-1马上蝙蝠,那么decNum将永远不会变得小于-1,while循环将永远不会结束.相反,使用if语句.如果用户输入-1,则结束该过程,否则进行转换.
正如已经指出的那样,>=应该是>