我正在尝试用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"
谢谢!在
发生无限循环是因为
decNum
始终等于用户输入的任何值。所以while循环的条件总是为真。在由于main函数中不需要重复计算,所以将},则选择退出。如果程序要求用户将多个值转换为十六进制,则需要使用
while
与if
交换,这是这里的正确语句,因为如果用户输入{while
循环。如果是这样,请将decNum
赋值语句也移到循环中。这将要求每次将最后一个输入数字转换为十六进制时,decNum
的新值。如果用户在任何迭代中输入-1
,则循环条件将失败,程序将移出该循环条件。在但是,如果用户输入},以哪种情况为准。在
-1
,则您的条件也不正确。它可以是if decNum > -1
或{我想你想做的是:
但是,您也可以只使用一个简单的if语句,这可能是更好的方法,除非您不打算在循环本身内部执行更多的操作。还要记住,使用
>= -1
即使是-1,也会继续循环。在你正在做
while decNum >= -1
。假设用户没有立即输入-1,那么decNum
将永远小于-1,while循环将永远不会结束。相反,请使用if语句。如果用户输入-1,则结束该过程,否则进行转换。在正如已经指出的,}
>=
应该是{相关问题 更多 >
编程相关推荐