寒假中期学习收获

此生再无相见时 提交于 2020-02-02 11:05:12

寒假中期学习收获

  1. 1.  寒假前三周学习收获

总计学习天数12天,每天平均学习时间为4小时,平均每日代码量约100行。代码总计1000行

学习进度:已学习完Python基础操作 ,正在学习模块操作及其相关内容。

计划完成情况:学习进度(原计划学习完模块操作,现略落后)

                        代码行数(原计划1500行,现1000行,尚需努力)

                        学习时间(总计学习时间将近50小时,达标)

                        习题量(大于20道,达标)

  1. 2.  读书收获,学英语进展

只阅读了Python课程设计一本书(大约已经过半)

英语学习每天一篇文章

  1. 3.  学习中遇到的问题或建议

几乎没有什么问题,都问了度娘,哈哈哈哈

给自己的建议就是要劳逸结合,保证学习的效率,尽量不做无用功。

  1. 4.  学习心得或分享

掌握了python的一些基本操作,深刻体会到了这门语言相比于C语言的简便之处,同时接触到了一种解密算法还有汉诺塔算法,令我印象最深刻,感受到了用计算机解决复杂问题计算问题的强大之处,也体会到了计算机的核心就是数学这一特点。相比于传统学科,我感觉计算机具有更大的魅力。

  1. 5.  学习笔记
  2.   
    print('\n')print('#################################################################################################')print('1.格式化输出')year = 2020month = 3day = 12print('%4d年%02d月%02d日' % (year, month, day))  # 格式化输出不足高位补零# print结尾默认end="\n",会自动换行pi = 3.1415926print('%06.2f' % pi)  # 格式化输出六位实型数据,小数点后保留两位,小数点占一位,整数部份占三位,不足高位补零n = 50391print('%.2e' % n)  # 格式化输出,科学计数法输出,保留小数点后两位(竟然有四舍五入的机制)n = 522print('%4d' % n)  # 十进制输出print('%4o' % n)  # 八进制输出print('%4x' % n)  # 十六进制输出q = 0x522print(q)print('\n')print('#################################################################################################')print('2.算术运算符')# 算术运算符# + - * % 都相同# **取平方运算a = 7b = a ** 2c = a ** 3d = a ** 4print('a=%4d\na**2=%4d\na**3=%4d\na**4=%4d\n' % (a, b, c, d))a = 2b = 3c = 4print('2**3**4 = ', a ** b ** c)print('2**81 = ', 2 ** 81)  # **是右结合性,从右向左计算# /与//的区别://只保留整数部分,/既保留整数部分也保留小数部分(Python的/不同于C的/)a = 7b = a / 3c = a // 3print('7/3 = ', b)print('7//3 = ', c)print('')# 应用: 利用除法与取余的方法提取身份证号信息print('身份证号为:371402200103121215')id = 371402200103121215year = id // 100000000 % 10000month = id // 1000000 % 100day = id // 10000 % 100sex = id % 100 // 10  # 倒数第二位是奇数为男性,是偶数为女性if sex % 2 == 1:    print('性别为男性')else:    print('性别为女性 ')print('出生日期为:', year, '年', month, '月', day, '日')print('\n')print('#################################################################################################')print('3.按位运算')# 按位运算(二进制的按位运算)#   &按位与,两个二进制位都为1,结果为1,否则为0#   |按位或,两个二进制位有一个为1,结果为1,否则为0#   ^按位异或,两个二进制位相同,结果为1,否则为0#   ~按位取反,对每个二进制位取反#   <<按位左移,去掉高位,地位补0#   >>按位右移,去掉低位,高位补0#   按位左移十进制数乘2,按位右移除2(左增右减)a = 256b = a << 1c = a >> 1d = a >> 2print('a =', a, '\na<<1 =', b, '\na>>1 =', c, '\na>>2 =', d)print('\n')print('#################################################################################################')print('4.分数型数据    (与C不同)')from fractions import Fraction  # 导入分数模fractions,Fraction(x,y) = x/ya = Fraction(1, 2)b = Fraction(1, 3)print('a =', a, '\tb =', b)print('a-b =', a - b)print('a+b =', a + b)print('a*b =', a * b)print('a/b =', a / b)print('')print('#################################################################################################')print('5.复数型数据')# 实部与虚部都是存在的,可以直接运算。虚部用J或者j来表示a = 2 + 7jb = 3 - 6jprint('a =', a, '\tb =', b)print('a+b =', a + b)print('a-b =', a - b)print('a*b =', a * b)print('a/b =', a / b)print('')print('#################################################################################################')print('6.字符串型数据')# 转义字符#   \续行符       \\反斜杠号     \'单引号        \"双引号#   \b退格        \n换行        \v纵向制表符     \t横向制表符     \r回车print('见注释')print('')print('#################################################################################################')# 字符串测试函数print('7.字符串测试函数')# isalpha()  判断是否全为字母,是返回1(True),否返回0(False)# isalnum()  判断是否全为字母和数字,是返回1(True),否返回0(False)# isdiget()  判断是否全为数字,是返回1(True),否返回0(False)# islower()  判断是否全为小写字母,是返回1(True),否返回0(False)# isupper()  判断是否全为大写字母,是返回1(True),否返回0(False)# isspace()  判断是否全为空格,是返回1(True),否返回0(False)str = "Python 1234"str2 = "123456845"str3 = "     "print('str =', str, '\tstr2 =', str2, '\tstr3 =', str3)print('str全为字母\t', str.isalpha())print('str为数字或者字母\t', str.isalnum())print('str2全为数字\t', str2.isdigit())print('str3全为空格\t', str3.isspace())print('')print('#################################################################################################')# 字符串运算print('8.字符串运算')#   + 字符串拼接#   * 字符串重复#   [] 通过索引号获得字符串指定字符#   [: ] 截取字符串中的连续部分#   in 成员运算符,若字符串中包含指定字符则返回True,否则返回False#   not in 成员运算符,若字符串中不包含指定字符则返回True,否则返回Falsestr1 = '我是'str2 = '大帅哥'str3 = 'programming'print('str1 =', str1, '\tstr2 =', str2, '\tstr3 =', str3)print('')print('str1+str2 =', str1 + str2)print('str2*3 =', str2 * 3)print('str3[2:6] =', str3[2:6])  # 从第零个字节开始,输出下标为2的字符串数组元素,输出个数为6-2个print('sdfkj\tdfjhh\nsdfke')  # 不加rprint(r'sdfkj\tdfjhh\nsdfke')  # 加rprint(str2 in str1)  # bool类型print('gramm' in str3)  # bool类型print('\n')print('#################################################################################################')print('9.序列数据')print('')# 1.列表# 列表的一大特点是元素之间可以是不同的类型#   从左向右索引: 0  1  2  3  4  5#   字符串:      P  y  t  h  o  n#   从右向左索引:-6 -5 -4 -3 -2 -1    #左后一个元素下标为-1# 创建列表用中括号括起来print('9-1 列表')list = [15, 23, 31, 46, 58, 69]list2 = [123, '我是', 1354, '大帅哥', 154]print(list)list[4] = 22  # 赋值print(list)del list[3]  # 删除第四个元素print(list)list.append(234)  # append只能在列表尾部添加一个元素print(list)list.extend(list2)  # 在extend后加添加另一个列表print(list)list3 = [15, 23, 31, 46, 58, 69]  # 还原listlist3.append(list2)print(list3)  # 用append连接# 总结append与expend的区别:append是将新列表作为一个元素插入原列表尾部,新列表是作为一个新元素出现在原列表中#                        extend是将新列表中的所有元素都添加到原列表尾部。print('\n')# 对列表整体操作的函数# cmp(list1,list2)  比较列表1与列表2的大小# len(list) 计算列表的长度# max(list) 找出列表中的最大元素# min(list) 找出列表中的最小元素print('list3的长度为:', len(list3))# 对列表内元素操作的函数# append() 在列表尾添加一个元素# extend() 在列表尾部添加多个元素# reverse() 倒置列表元素# sort() 从小到大排序list = [15, 23, 31, 46, 58, 69]list.reverse()print(list)list.sort()  # 用sort实现升序排序print(list)print(max(list))print(min(list))print('')# 2.元组            #元组与列表不同,元组的元素不可更改,只能重新定义元组。可以不用括号。print('9-2 元组')t = 15, 23, 31, 46, 58, 69print('元素个数为:', len(t))print('元组中的最大值为:', max(t))print('元素的和为:', sum(t))print('')# 3.字典     #用花格号包括# 字典与列表同样可以更改元素的值,但是字典中的键值是不变的,键值在字典中相当于一个名字,# 不能出现两次,所以只能用数字或字符串或元组表示。一个键值下的元素可以是任意类型,但必须一个键值对应一个数据。print('9-3 字典')dict = {'朱晓桐': 2414519951, 3: 'sjkdfh'}print('字典为:', dict)print(dict["朱晓桐"])print(dict[3])del dict[3]print(dict)print('')# 4.集合print('9-4 集合')a = set('sadkjfhekhssjfkljvi')b = set("1534,'朱晓桐',1654,822,(12,54,'ksdjfh')")c = {1534, '朱晓桐', 1654, 822, (12, 54, 'ksdjfh')}  # 注意集合B与集合C的区别d = set('asdjkfhweh')print('A集合为:', a)print('D集合为:', d)print(b)# 由此可见 set('') 引号中的任何字符都被分成了元素print(c)print(len(c))# 可以通过直接命名的方法创造集合,()内的所有元素算是集合中的一个元素print('')# 集合的 &,|,^,-print(a & c)  # 空集print(a | c)print(a ^ d)print(a - d)print('\n')# 10.流程控制print('#################################################################################################')print('10.流程控制')print()print('10-1 分支选择')print('见注释')# 分支选择# if.....else 条件选择# 单分支:# if <语句> :# if <语句> :# .......# 双分支:# if <语句> :#    .....# else :#    .....# 多分支:# if <语句>:#    .....# elif <语句>:#    .....# elif <语句>:#    .....# 循环控制print()print('10-2 循环控制')# while.....else 条件型循环#  for.....else  计数型循环n = 1while n <= 10:    n = n + 1    print('*', end='\t')  # end='字符'  因为print结束自动默认end = '\n',及自动换行    # 所以要利用循环在同一行输出必须更改end的值print('')for n in range(10):  # 如默认初值和步数,则初值默认为0,步数默认为1    print(n, end=' ')  # range函数,等差数列,不包括终值print()for n in range(1, 10, 1):    for i in range(1, n, 1):        print('?', end='')  # 嵌套循环    print()print('')# 显示斐波那契数列的前15项f1 = 1f2 = 2print(f1, '\t', f2, end='\t')for i in range(3, 16):  # 注意,此处初值为3为了确保每行输出的数据个数为5    f = f1 + f2    f1 = f2    f2 = f    print(f, end='\t')    if i % 5 == 0: print()# 分子分母都为斐波那契数列,求分式各项和# 求2/1,3/2,5/3,8/5,13/8,......的前20项和# 分子2,3,5,8,13.....    分母1,2,3,5,8.....f1 = 1f2 = 2sum = 0for i in range(20):    sum = sum + f2 / f1    f = f1 + f2    f1 = f2  # 算法原理:前一个分数的分子分母之和为下一个分数的分子,    f2 = f  # 前一个分数的分子为下一个分数的分母print(sum)print()# 计算 1-20 的阶乘之和sum = 0fact = 1for i in range(1, 21):    print('第', i, '个')    fact = fact * i  # 算法原理:利用单层循环,i的值会保留到下一次循环中,所以只需做阶乘然后累加即可    sum = sum + fact    print(sum)print('1到20的阶乘之和为:', sum)print()# 折半累加数学模型# 假设初始值为 100,每次减半,相加,无数次操作后,最终的和与初始值无限接近begin = 100sum = 0print('初始值为100')for n in range(1, 11):  # 假设操作次数为10    begin = begin / 2    sum = sum + begin    print('第', n, '次的和为:', sum)print('无限接近初始值')print('最后反弹高度为:', begin)print()print('10-3 辅助控制')# 辅助控制# break 终止循环# continue 结束本次循环,及跳过循环剩下的全部语句,进入下一次循环# pass 空语句,不执行,具有占位的作用# return 从函数中返回# try...catch 异常处理# 用continue输出9x9乘法表for i in range(1, 10):    for j in range(1, 10):        if j > i: continue        k = j * i        print(i, 'x', j, '=', k, end='\t')    print()print()# 把整数316分成两个数之和,其中一个数为13的倍数,另一个数位11的倍数,求所有可能的两个数for n in range(13, 316, 13):    m = 316 - n    if m % 11 == 0:        print(n, m, end='\t')print()# 爱因斯坦阶梯问题for i in range(1, 1000):    if i % 2 == 1 and i % 3 == 2 and i % 5 == 4 and i % 6 == 5 and i % 7 == 0:        print(i, end='\t')print('\n')print('#################################################################################################')print('11.列表处理')# 列表逆序list = [15, 55, 662, 1564, 54, 1, 231, 157]  # 8个元素for i in range(0, 8):    print(list[i], end=' ')print()for j in range(-1, -9, -1):    print(list[j], end=' ')print()print()# 用一维列表显示斐波那契数列list = [1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]for i in range(2,20):    list[i] = list[i-1]+list[i-2]print(list)# 用筛法求1-100内的质数count = 0for i in range(2,101):    if i%2==0 or i%3==0 or i%5==0 or i%7==0 :        pass    else:        print(i,end = '\t')print('\n')# 列表实现list = []count = 0for i in range(2,102):      # 创建容量为100的列表    list.append(i)    count = count+1    print(list[i-2],end="\t")    if count%10==0:print()a = []print()count2 = 0for n in range(0,100):    if list[n]%2!=0 and list[n]%3!=0 and list[n]%5!=0 and list[n]%7!=0:        a.append(0)        a[count2] = list[n]        count2 = count2+1        list[n] = 0    print(list[n],end="\t")    if (n+1)%10==0:print()print()print('质数为:',a)print()# 10-2 二维列表print('10-2 二维列表')a = [[1,23,4,51,70],[25,48,65,24,8],[13,2,98,44,71],[321,49,56,28,66],[12,54,25,15,33]]for i in range(0,5):    for j in range(0,5):        print(a[i][j],end='\t')    print()# 计算主对角线元素的和count = 0for n in range(0,5):    count = count+a[n][n]print('主对角线的和为:',count)# 找出最大值以及其所对应的行列号hang = 0lie = 0m = 0n = 0most = a[m][n]for m in range(0,5):    for n in range(0,5):       if a[m][n]>most:           most = a[m][n]           hang = m+1           lie = n+1print('最大值为:',most)print('第%d行第%d列'%(hang,lie))# 6x6杨辉三角形a = [[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0]]for i in range(0,6):    a[i][0] = 1    a[i][i] = 1     # 初始化对角线和第一列元素都为1for i in range(2,6):    for j in range(1,6):        a[i][j] = a[i-1][j-1]+a[i-1][j]     # 构造杨辉三角for i in range(0,6):    for j in range(0,i+1):        print(a[i][j],end = '\t')       # 输出杨辉三角    print()# 调整格式后的输出for i in range(0,6):    for n in range(0,6-(i+1)):        print(end = '  ')    for j in range(0,i+1):        print(a[i][j],end='   ')    print()print()# 判断一个数是否为鞍点(即该数在行上最大,在列上最小)5x5列表a = [[1,23,100,51,70],[25,48,101,24,8],[13,2,98,44,71],[321,49,130,28,66],[12,54,113,15,33]]for i in range(0,5):    for j in range(0,5):        print(a[i][j],end='\t')     # 列表输出    print()flag = 0for i in range(0,5):    most = a[i][0]    for j in range(0,5):        if a[i][j]>most:            most = a[i][j]            hang = i+1            lie = j+1    min = a[0][lie - 1]    for n in range(0,5):        if a[n][lie-1]<min:           min = a[n][lie-1]    if most==min:        print(most)        print(min)        print('鞍点值为:',a[hang-1][lie-1])        print('位置:%d行%d列'%(hang,lie))print()# 10-3 折半查找print('10-3 折半查找')# 构造元素数量为20的列表list = [13,45,12,87,65,15,24,51,99,78,14,23,46,58,22,54,30,27,66,69]list.sort()     # 折半查找前提是有序,如想从大到小排序只需再调用reverse()函数space = len(list)top = 0     # 查找范围的起始角标bot = space-1   # 查找范围的结束角标mid = 0     # 中间元素的下标number = 54     # 假设所要查找的数值为46flag = 0while top<=bot:     #注意此处一定为<=号,否则造成最后一次循环没办法进入    mid = (top+bot)//2    if list[mid] == number:        print('查到了')        flag = 1        break    elif list[mid]<number:        top = mid+1    elif list[mid]>number:        bot = mid-1if flag==0:    print('没找到')print('\n')print('#################################################################################################')print('11.字符串处理')str = '人人为我,我为人人'       # 判断是否为回文序列 (也支持中文字符串,一个汉字算一个字符)print(str)flag = 0space = len(str)print(len)for i in range(0,space//2):    if str[i] == str[space-1-i]:        flag = flag+1if flag==space//2:    print('是回文序列')else:    print('不是回文序列')print()# 统计一句英文中的单词个数str2 = 'I am a handsome man'print(str2)space = len(str2)atmp = 0number = 0for i in range(0,space):    if str2[i]==' ':        atmp = 0    else:        if atmp==0:            number = number+1            atmp = 1print('单词个数为:',number)print()#利用编码翻译密文(解密)#加密算法:第一个字母对应最后一个,第二个对应倒数第二个s = 'R droo erhrg Xsrmz mvcg dvvp.'     # 密文space = len(s)print('密文:',s)print('明文:',end = '')for i in range(0,space):    if s[i]>='a' and s[i]<='z':        print(chr(219-ord(s[i])),end='')     # chr()将ASCLL码值转化为字符,ord()将字符转化为ASCLL码值    elif s[i]>='A' and s[i]<='Z':        print(chr(155-ord(s[i])),end='')    else:        print(s[i],end='')print()print('\n')print('#################################################################################################')print('12.函数')# 通过返回列表返回多值import randomdef my_random(n):    a = []    for i in range(n):        a.append(random.random())    return an = 8       # 随机数个数a = my_random(n)for i in range(n):    print(a[i],end="\n")print()# 计算 m!/n!/(m-n)!,算法相同,所以调用三次相同的函数def comp(k):    tol = 1    for i in range(1,k+1):        tol = tol*i    return toln = 2m = 6result = comp(m)/comp(n)/comp(m-n)print('结果为:',result)print()# 用欧几里得算法计算最大公约数def fuc(x,y):    while x%y!=0:        r = x%y        x = y        y = r    return yx = 128y = 48y = fuc(x,y)print('最大公约数为:',y)print()# 验证哥德巴赫猜想 (任何一个大于6的偶数都可被分为两个质数的和)def judge(m):   # 判断该数是否为质数    for n in range(2,m):        if m%n==0:  # 不是质数            return 0    return 1    #是质数# 主函数count = 0for i in range(2,101):    if i%2 == 0:        # 确定为偶数        for j in range(2,i//2+1):            if judge(j)==1 and judge(i-j)==1:                count = count+1                print('%3d=%2d+%2d'%(i,j,i-j),end ='  ')                if count%5 == 0:                    print()print('\n')# 找出100以内所有相邻的质数 如(3 5,5 7,11 13),相差2的为一组def f(m):   #判断是否为质数    for i in range(2,m):        if m%i==0:    #不是质数            return 0    return 1    #是质数# 主函数a = []  # 定义空列表for i in range(2,101):    if f(i)==1:        a.append(i)print(a)print('结果为:')for i in range(len(a)-1):    if a[i+1]-a[i]==2:        print('(%d,%d)'%(a[i],a[i+1]))print()# 找出500以内的全部亲密数对(A的因数之和(包括1但不包括本身)相加等于B# 同时B的因数之和相加也等于A,则称A与B互为亲密数对)def p(m):   # 求m的因数之和    s = 0    for i in range(1,m):        if m%i==0:            s = s+i    return s# 主函数for i in range(2,501):    A = i    B = p(A)    if p(B)==A and A!=B:        print('%d与%d为亲密数对'%(A,B))print()# 整数n的9倍恰为n的反序数def revers(m):    s = 0    for i in range(4):        if a != 0:            s = s * 10 + m % 10            m = m // 10    return s# 主函数for n in range(1000,1111):  # 因为最大四位数为9999,所以n最大为1111    if 9*n == revers(n):        print('该反序数为:',n)print()# 验证6174猜想def rev(k):      # 倒序数字    s = 0    for i in range(4):        s = s*10 + k%10        k = k//10    return sdef make(m):     # 生成由大到小的四位数    a = [0,0,0,0]    a[0] = m%10    a[1] = m//10%10    a[2] = m//100%10    a[3] = m//1000%10    a.sort()    a.reverse()    return a[0]*1000+a[1]*100+a[2]*10+a[3]# 主函数m = 5298    # 假设测试数据为 1584number = make(m)  # 创造每位数由大到小排序的四位数(大数)count = 0while number!=6174:    count = count + 1    A = make(number)    B = rev(A)    number = A-B    print('第%d次:%d-%d=%d' % (count, A, B, A-B))print('\n')print('12-2 一维列表作为实参')# 定义函数def most(b):    m = b[0]    for i in range(1,9):        if m<b[i]:            m = b[i]        return m# 主程序及其调用函数# 创建一维列表并初始化a = [1,2,3,4,5,0,9,8,7,6]print('全部数:',end = '')for i in a:    print(i,end = '  ')print()print('最大数:',most(a))print()# 一维列表中的元素作为实参# 定义函数def large (x,y):    if x>y:        return 1    elif x<y:        return -1    else:        return 0# 主程序及其调用函数a = [3,5,7,9,8,6,4,2,0,0]b = [3,8,9,-1,-3,5,6,0,4,0]print('列表a:',end='')for i in a:    print(i,end = '  ')print()n=m=k=0for i in range(0,len(a),1):    if large(a[i],b[i])==1:        n = n+1    elif large(a[i],b[i])==0:        m = m+1    else:        k = k+1print('a[i]>b[i]:',n)print('a[i]=b[i]:',m)print('a[i]<b[i]:',k)if n>k:    print('列表a大于列表b')elif n<k:    print('列表a小于列表b')else:    print('列表a等于列表b')print()# 二维列表作为实参# 定义函数def mst(a):    most = a[0][0]    for i in range(3):        for j in range(4):            if a[i][j]>most:                most = a[i][j]    return most# 主程序a = [[1,3,5,7],[2,4,6,8],[15,17,34,12]]print('列表:')for i in range(3):    for j in range(4):        print(a[i][j],end = '\t')    print()print('最大值为:',mst(a))print()# 可变参数def sum(a,b,*c):    s = a+b    for n in c:        s = s+n    return sprint('1+2+3 =',sum(1,2,3))      # 计算 1+2+3print('1+2+3+4 =',sum(1,2,3,4))   # 计算1+2+3+4print('1+2+3+4+5 =',sum(1,2,3,4,5))# 计算1+2+3+4+5print()# 函数的作用域A = 13B = -8# 定义函数def most(x,y):    if x>y:        z = x    else:        z = y    return z# 主程序print('A =',A,'\tB =',B)print('较大数:',most(A,B))# global语句,定义全局变量a = 6# 函数定义def power(n):    global a    y = 1    for i in range(1,n+1):        y = y*a    return y# 主函数b = 4m = 3   #假设测试数据为3c = a*bprint(a,'x',b,'=',c)d = power(m)print(a,'和',m,'乘方=',d)# lambda 函数(匿名函数)def com(n):    if n==1:        return lambda x,y:x+y      # lambda <参数>:<表达式>      # lambda 函数只能表达较为简单的表达式    if n==2:        return lambda x,y:x-y# 主函数print('输出调用结果')operate = com(1)print('46+2 =',operate(46,2))operate = com(2)print('46-2 =',operate(46,2))print('\n')print('12-3 递归函数')# 定义递归函数计算 n 的阶乘def fact(m):    if m == 1:        return 1    else:        return fact(m-1)*m# 计算5的阶乘print('5! =',fact(5))print('\n')#汉诺塔问题print('#################################################################################################')print('汉诺塔问题')count = 0def move(one,three):    print(one,'->',three)def hanoi(n,one,two,three):     #意为从A借助B移到C    global count    count = count+1    if n==1:        move(one,three)    else:        hanoi(n-1,one,three,two)     #意为从A借助C移到B        move(one,three)        hanoi(n-1,two,one,three)    #意为从B借助A移到C    return countn = 3      #假设测试数据为3print('步骤为:')hanoi(n,'A','B','C')print('总计%d次操作'%count)print('#################################################################################################')# 简便版def mov(A,C):    print(A,'->',C)def fuc(n,A,B,C):    if n==1:        move(A,C)    else:        fuc(n-1,A,C,B)        move(A,C)        fuc(n-1,B,A,C)n = 5fuc(n,'A','B','C')print('#################################################################################################')print('\n')# 用递归函数计算最大公约数def f(m,n):    if m%n==0:        return n    else:        return f(n,m%n)# 主函数m = 128n = 48print('%d与%d的最大公约数为:%d'%(m,n,f(m,n)))# 用递归函数计算n阶调和数 1+1/2+1/3.....+1/ndef p(n):    if n == 1:        return 1    else:        return p(n-1)+1/n# 主函数n = 5   # 假设测试数据为5print('%d阶调和数为:%f'%(n,p(5)))# 用递归函数实现反序数    #注意此种方法未定义变量并赋值,只是单纯的显示def f(p):   # 对m实现反序    print(p%10,end = '')    if p//10 != 0:        f(p//10)p = 13548print('原数据:%d'%p)print('倒序数据:',end = '')f(p)# 模块print('#################################################################################################')print('13-1 模块')# 导入模块import mathprint('pi = \t\t',math.pi)print('e = \t\t',math.e)print('sqrt(2) = \t',math.sqrt(2))print()# 导入模块成员from math import fabs,sqrt,powprint('fabs(-9) =',fabs(-9))print('sqrt(9) =',sqrt(9))print('pow(2,5) =',pow(2,5))print()# math 模块中的常用函数import mathprint('ceil(2.56) =',math.ceil(2.56))       # 返回大于x的最小整数print('floor(2.56) =',math.floor(2.56))     # 返回小于x的最大整数print('factorial(5) =',math.factorial(5))   # 返回x的阶乘值print('hypot(3,4) =',math.hypot(3,4))       # 返回直角三角形中斜边的值print('log(e) =',math.log(math.e))          # 返回以自然对数为底的对数值print('log10(pow(10,5)) =',math.log10(pow(10,5)))   # 返回以10为底的对数值print()
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!