Python函数调用和递归
一.
(1)掌握Python语言中定义函数的方法。
(2)理解Python函数调用的过程。
(3)掌握递归的基本思想。
二.内容
(1)请使用Python语言编写递归函数,实现十进制数到R进制的转换,且2≤R<10。
1.
通过自定义函数,先将数字字符保存进入数组中,同时对数组进行,同时通过while语句进入循环,通过求商取余运算,,进行进制之间地数值转换,同时将相应地结果保存进入数组中,最后通过转置的结果查找最初保存的相关字符,再通过用户输入调用相关函数进行运算操作。
2.
def jinzhizhanhuan(n,x):
a=[0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F']
b=[]
while True:
s=n//x
y=n%x
b=b+[y]
if s==0:
break
n=s
b.reverse()
for i in b:
print(a[i],end='')
S = input("input number and jingzhi:")
L = S.split(',')
jinzhizhanhuan(int(L[0]),int(L[1]))
(2)请用Python语言编写一个简单的把二进制小数转换为十进制小数的程序。要求输入一个二进制小数,例如输入“0.1011”,代表二进制小数0.10112,输入相应的十进制小数。
1.
通过split区分记入小数点后值,然后通过for循环对小数点后的值进行成对应位置-1的2次方操作,将二进制小数转换为相应的十进制小数。
2.核心代码及算法片段
def dec(s):
a,b = s.split('.')
decimal = 0
for i in range(len(b)):
decimal += 2 ** (-i - 1) * int(b[i])
return decimal
S = input("input number:")
print(dec(S))
(3)请编写一个Python程序,用“四位一并法”实现二进制整数到十六进制整数的转换。要求程序输入一个二进制整数,输出一个相应的十六进制整数。
1.
本题可以直接利用之前实验中写入的进制转换函数,通过定义好二进制和十六进制,直接实现两数之间的转换。
2.核心代码及算法片段
def erjinzhi(n,x):
a=[0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F']
b=[]
c=""
while True:
s=n//x
y=n%x
b=b+[y]
if s==0:
break
n=s
b.reverse()
for i in b:
print(a[i],end='')
S = input("input a number:")
b = int(S,2)
erjinzhi(b,16)
(4)完成merge(L1, L2) 函数:输入参数是两个从小到大排好序的整数列表L1和L2,返回合成后的从小到大排好序的大列表X。例如:merge([1, 4, 5], [2, 7])会返回[1, 2, 4, 5, 7];merge([ ], [2, 3, 4])会返回[2, 3, 4]。
1.
本实验最简单的方式便是使用extend函数对元素进行写入,直接利用列表排序已定义好的函数sort能够直接实现李彪从小到大的排序。
2.核心代码及算法片段
def merge(L1,L2):
L = []
L.extend(L1)
L.extend(L2)
L.sort()
return L
print(merge([1,4,5],[2,7]))
print(merge([],[4,3,2]))