Python 陷入无限循环
我正试图用python编写一个程序,将十进制数转换为十六进制数。当我运行程序时,它会给我正确的转换,但它运行在一个无限循环上。我不确定无限循环到底发生在哪里。这是我的代码:Python 陷入无限循环,python,Python,我正试图用python编写一个程序,将十进制数转换为十六进制数。当我运行程序时,它会给我正确的转换,但它运行在一个无限循环上。我不确定无限循环到底发生在哪里。这是我的代码: def remainderToHex(remainder): if remainder <= 9: remainder = str (remainder) elif remainder == 10: remainder = "A" elif remainder =
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"
def remainderToHex(余数):
如果余数为0:
余数=商%divNum
convertedHex=余数到十六进制(余数)
商=int(商/divNum)
hexNum=convertedHex+hexNum
返回hexNum
def main():
decNum=int(原始输入(“请输入非负数或输入-1以退出:”)
而decNum>=-1:
hexNumber=decToHex(decNum)
打印decNum,“转换为十六进制为:”,十六进制编号
打印“谢谢”
谢谢 您正在执行
,而decNum>=-1
。假设用户没有立即输入-1,那么decNum
将永远不会小于-1,while循环将永远不会结束。相反,使用if语句。如果用户输入-1,则结束该过程,否则执行转换
正如已经指出的,当decNum>=-1时,
=
应该是您正在执行的。假设用户没有立即输入-1,那么decNum
将永远不会小于-1,while循环将永远不会结束。相反,使用if语句。如果用户输入-1,则结束该过程,否则执行转换
正如已经指出的那样,=
应该是
我认为您想要做的是:
if __name__ == "__main__":
decNum = 0
while decNum > -1:
decNum=int(raw_input("Please enter a non negative number OR enter -1 to quit: "))
hexNumber = decToHex(decNum)
print decNum, "convered to hex is: ", hexNumber
print "Thank you"
但是,您也可以只使用一个简单的if语句,这可能是更好的方法,除非您不打算在循环本身中做更多的事情。还请记住,使用=-1
时,即使在-1的情况下,您也将保持循环。我认为您想要做的是:
if __name__ == "__main__":
decNum = 0
while decNum > -1:
decNum=int(raw_input("Please enter a non negative number OR enter -1 to quit: "))
hexNumber = decToHex(decNum)
print decNum, "convered to hex is: ", hexNumber
print "Thank you"
但是,您也可以只使用一个简单的if语句,这可能是更好的方法,除非您不打算在循环本身中做更多的事情。还请记住,使用=-1
即使在-1的情况下,您也会继续循环。好吧,在我输入答案之前,其他人都已经击败了我,所以我将删除它,并添加我认为唯一需要的其他一点智慧:如果您正在学习Python,您应该使用Python 3.x,而不是Python 2.x学习
我不想发动任何火焰之战,但Python2.x是一个死分支,未来是3.x
在2.x和3.x之间切换很容易,但是除非你需要,否则为什么要学习旧的呢
(是的,我知道还有很大的2.x代码库)好吧,在我输入答案之前,其他人都已经击败了我,所以我将删除它,并添加我认为唯一需要的其他一点智慧:如果你在学习Python,你应该学习Python 3.x,而不是Python 2.x
我不想发动任何火焰之战,但Python2.x是一个死分支,未来是3.x
在2.x和3.x之间切换很容易,但是除非你需要,否则为什么要学习旧的呢
(是的,我知道还有很大的2.x代码库)无限循环正在发生,因为decNum
始终等于用户输入的任何值。因此while循环的条件始终为true
由于主功能中不需要重复计算,请将while
与if
交换,这是正确的说法,因为如果用户输入-1
,您将选择退出。如果您的程序要求用户将多个值转换为十六进制,则需要while
循环。如果是这种情况,请将decNum
赋值语句也移动到循环中。每次将最后一个输入数字转换为十六进制时,这将要求为decNum
输入一个新值。如果用户在任何迭代中输入-1
,循环条件将失败,程序将退出循环
但是,如果用户输入-1
时需要退出,则您的条件也不正确。如果decNum>-1或而decNum!=-1
,以任何情况为准。无限循环之所以发生,是因为decNum
始终等于用户输入的任何值。因此while循环的条件始终为true
由于主功能中不需要重复计算,请将while
与if
交换,这是正确的说法,因为如果用户输入-1
,您将选择退出。如果您的程序要求用户将多个值转换为十六进制,则需要while
循环。如果是这种情况,请将decNum
赋值语句也移动到循环中。每次将最后一个输入数字转换为十六进制时,这将要求为decNum
输入一个新值。如果用户在任何迭代中输入-1
,循环条件将失败,程序将退出循环
但是,如果用户输入-1
时需要退出,则您的条件也不正确。如果decNum>-1或而decNum!=-1
,无论哪种情况。仅供参考,有一个内置函数hex()
,它可以实现您想要的功能,。。。即使出于某种原因您不想使用hex()
,该例程也有点难看。即使返回“0123456789ABCDEF”[余数]
也更可取……我不应该为这段代码使用任何内置函数!仅供参考,有一个内置函数hex()
,它可以实现您想要的功能,。。。即使出于某种原因您不想使用hex()
,该例程也有点难看。即使返回“0123456789ABCDEF”[余数]
也更可取……我不应该为这段代码使用任何内置函数!或者将decNum
初始化为0,并将raw\u输入
行置于t内