Python 递归地从十进制到十六进制
我可以让函数定期工作,但当我递归地执行它时,它会在内部重复,我必须“Ctrl C”才能在shell中结束它 非递归Python 递归地从十进制到十六进制,python,recursion,Python,Recursion,我可以让函数定期工作,但当我递归地执行它时,它会在内部重复,我必须“Ctrl C”才能在shell中结束它 非递归 def convert_10_to_16(n): hexlist =[] x = n // 16 if x < 10: hexlist.append(x) elif (x == 10): hexlist.append('A') elif (x == 11): hexlist.append('B') elif (x == 12):
def convert_10_to_16(n):
hexlist =[]
x = n // 16
if x < 10:
hexlist.append(x)
elif (x == 10):
hexlist.append('A')
elif (x == 11):
hexlist.append('B')
elif (x == 12):
hexlist.append('C')
elif (x == 13):
hexlist.append('D')
elif (x == 14):
hexlist.append('E')
elif (x == 15):
hexlist.append('F')
y = n % 16
if y < 10:
hexlist.append(y)
elif (y == 10):
hexlist.append('A')
elif (y == 11):
hexlist.append('B')
elif (y == 12):
hexlist.append('C')
elif (y == 13):
hexlist.append('D')
elif (y == 14):
hexlist.append('E')
elif (y == 15):
hexlist.append('F')
return ''.join(hexlist)
def将_10_转换为_16(n):
hexlist=[]
x=n//16
如果x<10:
hexlist.append(x)
elif(x==10):
hexlist.append('A')
elif(x==11):
hexlist.append('B')
elif(x==12):
hexlist.append('C')
elif(x==13):
hexlist.append('D')
elif(x==14):
hexlist.append('E')
elif(x==15):
hexlist.append('F')
y=n%16
如果y<10:
hexlist.append(y)
elif(y==10):
hexlist.append('A')
elif(y==11):
hexlist.append('B')
elif(y==12):
hexlist.append('C')
elif(y==13):
hexlist.append('D')
elif(y==14):
hexlist.append('E')
elif(y==15):
hexlist.append('F')
返回“”。加入(hexlist)
递归的
def convert_10_to_16(n):
hexlist =[]
x = n // 16
if x < 10:
hexlist.append(x)
elif (x == 10):
hexlist.append('A')
elif (x == 11):
hexlist.append('B')
elif (x == 12):
hexlist.append('C')
elif (x == 13):
hexlist.append('D')
elif (x == 14):
hexlist.append('E')
elif (x == 15):
hexlist.append('F')
y = n % 16
if y < 10:
hexlist.append(y)
elif y >= 10:
z = y
convert_10_to_16(z)
def将_10_转换为_16(n):
hexlist=[]
x=n//16
如果x<10:
hexlist.append(x)
elif(x==10):
hexlist.append('A')
elif(x==11):
hexlist.append('B')
elif(x==12):
hexlist.append('C')
elif(x==13):
hexlist.append('D')
elif(x==14):
hexlist.append('E')
elif(x==15):
hexlist.append('F')
y=n%16
如果y<10:
hexlist.append(y)
elif y>=10:
z=y
将_10_转换为_16(z)
我不知道如何才能让它递归工作,因此非常感谢您的帮助 您需要一个递归案例和一个基本案例 但更重要的是使用有意义的变量名
def convert_digit_to_hex(x):
if x < 10:
return str(x)
elif (x == 10):
return 'A'
elif (x == 11):
return 'B'
elif (x == 12):
return 'C'
elif (x == 13):
return 'D'
elif (x == 14):
return 'E'
elif (x == 15):
return 'F'
def convert_number_to_hex(n):
remaining_digits = n // 16
last_digit = n % 16
if remaining_digits == 0:
return convert_digit_to_hex(last_digit)
else:
return convert_number_to_hex(remaining_digits) + convert_digit_to_hex(last_digit)
def将数字转换为十六进制(x):
如果x<10:
返回str(x)
elif(x==10):
返回“A”
elif(x==11):
返回“B”
elif(x==12):
返回“C”
elif(x==13):
返回'D'
elif(x==14):
返回“E”
elif(x==15):
返回“F”
def将数字转换为十六进制(n):
剩余数字=n//16
最后一位=n%16
如果剩余的_位数==0:
返回将数字转换为十六进制(最后一位)
其他:
返回将数字转换为十六进制(剩余的数字)+将数字转换为十六进制(最后的数字)
在python中执行将十进制转换为十六进制的递归函数时,可以使用“%”这是一个字符串格式运算符。通过使用“%x”或“%x”,它有助于将十进制转换为十六进制
def main():
#Asks user for decimal
number = int(input("Enter a decimal: "))
num = convert(number)
print(num)
def convert(dec):
#Converts the decimal to hexadecimal
hex = "%X" % dec
print("The hexadecimal is: ", end="")
#Prints hexadecimal
return hex
main()
这可以简单、递归地完成,无需内置函数和
列表
数据结构:
DIGITS = "0123456789ABCDEF"
def convert_10_to_16(number):
number, remainder = number // 16, DIGITS[number % 16]
if number:
return convert_10_to_16(number) + remainder
return remainder
if __name__ == "__main__":
for number in range(257):
print(number, '=', convert_10_to_16(number))
缩进在我的python shell中是正确的。我猜你知道你可以做的
断言'A'==hex(10).upper()[-1]
,对吗hex
是一个内置函数,具有。我们不能使用内置python函数:/Why不能使用内置函数?你的经理疯了。我会向人力资源部投诉。意思是,像“第一个数字”是最后一个数字你切换了这两个,所以你有一个bug。@KarolyHorvath:是我做的。n
和x
对我都没有意义。而且str()
是一个内置函数,不是吗?嗯……这根本不是递归的!即使这不是递归的,函数“%X”或“%X”仍会将十进制更改为十六进制。当然,如果有人要求递归解决方案,则该解决方案应该是递归的!