关键词搜索

源码搜索 ×
×

Python基础教程:7个经典基础案例

发布2021-08-31浏览1101次

详情内容

1.列表排序

  1. def que6():
  2. # 6.输入三个整数x, y, z,形成一个列表,请把这n个数由小到大输出。
  3. # 程序分析:列表有sort方法,所以把他们组成列表即可。
  4. li = np.random.randint(-100, 100, size=10)
  5. # 就地转化
  6. li = li.tolist()
  7. # 用sort()结果
  8. li_sort = sorted(li, reverse = False)
  9. print('用sort方法,重新排列结果:{}'.format(li_sort))
  10. # 不用sort方法,自己写排序方法做,
  11. # 冒泡排序
  12. def bubbleSort(m):
  13. m = m.copy()
  14. for time in range(1, len(m)):
  15. for index in range(len(m) - time):
  16. if m[index] > m[index+1]:
  17. m[index], m[index+1] = m[index+1] , m[index]
  18. return m
  19. # 选择排序
  20. def selectSort(m):
  21. m = m.copy()
  22. for seat_L in range(len(m)-1):
  23. for seat_R in range(seat_L+1, len(m)):
  24. if m[seat_L] > m[seat_R]:
  25. m[seat_L], m[seat_R] = m[seat_R], m[seat_L]
  26. return m
  27. # 插入排序1(内部写成函数):
  28. def insertSort_1(m):
  29. result = []
  30. # 单个元素k插入列表li
  31. def to_insert(li, k):
  32. # 标识符
  33. tab = False
  34. # 寻找插入位置
  35. # 循环次数应该至少大于列表长度+1,None也占一位(空列表),即认为扑克牌最末尾还有一张‘空牌’
  36. for i in range(len(li) + 1):
  37. # 修改标识符,标志‘遍历完后的下一个循环’,即在和‘空牌’比较
  38. if i == (len(li)):
  39. tab = True
  40. # 如果在对li[-1]比较完成(包含)之前,且寻找到位置,即把扑克从左往右比较一遍
  41. if not tab and k < li[i]:
  42. li.insert(i, k)
  43. break
  44. # 如果遍历完成,多循环一次,即和‘空牌’不需要比较,直接把牌替换掉‘空牌’
  45. if tab:
  46. li.append(k)
  47. return li
  48. # 遍历列表
  49. # result = result[:1]
  50. for length in range(len(m)):
  51. result = to_insert(result, m[length])
  52. # print(result,m[length])
  53. return result
  54. # 插入排序2(直接嵌套循环):
  55. def insertSort2(m):
  56. m = m.copy()
  57. result = m[:1]
  58. for index_choose in range(1, len(m)):
  59. # 手上已经有index_choose张牌,比较第index_choose+1张牌则append
  60. # 逐个比对手上的牌,如果都对比了一遍,则加到最后
  61. for index_insert in range(len(result) + 1):
  62. print(result, index_insert,'\n',m, index_choose,'\n\n')
  63. if index_insert != index_choose and m[index_choose] < result[index_insert] :
  64. result.insert(index_insert, m[index_choose])
  65. break
  66. if index_insert == index_choose:
  67. result.append(m[index_choose])
  68. # print(result, m[index_choose])
  69. return result
  70. # print(li)
  71. print('插入排序:',insertSort3(li))
  72. print('选择排序:',selectSort(li))
  73. print('冒泡排序:',bubbleSort(li))
  74. que6()

2.调换字python教程典键值

  1. # 1. 调换元素.\
  2. def que1():
  3. d={1:"one",2:"two"}
  4. # 方法1 --- 动态赋值
  5. def method1(d):
  6. d = d.copy()
  7. result = {}
  8. for k,v in d.items():
  9. result[v] = k
  10. return result
  11. # 方法2 --- 生成器
  12. def method2(d):
  13. d = d.copy()
  14. result = {v:k for k,v in d.items()}
  15. return result
  16. # 方法3 --- 由值寻找键
  17. def method3(d):
  18. d = d.copy()
  19. # 由键寻找值
  20. def match(dic, b):
  21. return [k for k,v in dic.items() if v == b]
  22. # 先生成key-None,再赋值
  23. result = {}
  24. result = result.fromkeys(d.values())
  25. for k in result.keys():
  26. result[k] = match(d, k)[0]
  27. return result
  28. # 方法4 --- 列表转字典 < 直接转换/动态赋值 >
  29. def method4(d):
  30. d = d.copy()
  31. key = d.keys()
  32. val = d.values()
  33. data = list(zip(key, val))
  34. # 方法4-1
  35. result1 = {}
  36. for i in range(len(data)):
  37. result1[data[i][1]] = data[i][0]
  38. # 方法4-2
  39. result2 = dict(zip(val, key))
  40. return result1, result2
  41. print('新列表动态赋值方法:{}'.format(method1(d)))
  42. print('生成器方法:{}'.format(method2(d)))
  43. print('由键寻值方法:{}'.format(method3(d)))
  44. print('动态赋值列表转字典方法:{}'.format(method4(d)[0]))
  45. print('直接列表转字典方法:{}'.format(method4(d)[1]))
  46. # que1()

3.删除列表中的重复元素

  1. #遇到问题没人解答?小编创建了一个Python学习交流群:531509025
  2. #寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
  3. # 3. 删除重复元素list =[1,2,5,4,1,5,6,8,0,2,5]
  4. a = np.random.randint(-100, 100, size=10)
  5. a = a.tolist()
  6. def method1(a):
  7. a = a.copy()
  8. a = set(a)
  9. return a
  10. def method2(a):
  11. b = a.copy()
  12. c = 0
  13. for i in range(len(a)-1):
  14. if b[i+c] in b[:i+c]+b[i+c+1:]:
  15. b.pop(i+c)
  16. c -= 1
  17. return b
  18. print('集合法:',method1(a))
  19. print('遍历法:',method2(a))

4.输出质数

  1. def prime(end):
  2. prime_list = []
  3. if end <= 1:
  4. print('必须大于1')
  5. else:
  6. # prime_list.append(2)
  7. for i in range(2, end+1, 1):
  8. count = 0
  9. if i == 2:
  10. if i%2 != 0:
  11. prime_list.append(2)
  12. else:
  13. for m in range(2, i):
  14. # 能够整除,则跳出循环
  15. if (i % m) == 0:
  16. # print(i, m)
  17. break
  18. # 否则计数+1
  19. else:
  20. count += 1
  21. # 判断是否整除完成(0/n)
  22. if count == i - 2:
  23. prime_list.append(i)
  24. print(count, i, m)
  25. return (prime_list)
  26. num = int(input('想输出2到多少?'))
  27. print(prime(num))

5.判断是一年中第几天

  1. def que3():
  2. # 3.输入某年某月某日,判断这一天是这一年的第几天?:
  3. # 闰年判断函数
  4. def judge_leap(num):
  5. date = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
  6. # (四年一闰 and not百年) or 四百年闰
  7. if (num % 4 == 0 and num % 100 != 0) or num % 400 ==0:
  8. date[1] =29
  9. return date
  10. # 格式转换
  11. date = (input('请输入一个日期,格式如:“2018.02.12”:'))
  12. date_list = (list(map(int, (date.split('.')))))
  13. # 遍历计算天数
  14. day = date_list[2]
  15. for i in range(date_list[1]):
  16. day += judge_leap(date_list[0])[i]
  17. print('{}月{}日是{}年的第{}天\n'.format(date_list[1], date_list[2], date_list[0], day))
  18. # que3()

6.猜数字

  1. # 重新猜数字
  2. import random
  3. def judge_num(num, num_random):
  4. if num > num_random:
  5. print('It\'s too big')
  6. return 1
  7. elif num < num_random:
  8. print('It\'s too small')
  9. return 1
  10. else:
  11. print("Congratulation!! That\' right!")
  12. return 0
  13. # 产生随机数
  14. num_start = int(input('Digital lower limit of guess number:\n'))
  15. num_end = int(input('Digital upper limit of guess number:\n'))
  16. num_random = random.randint(num_start, num_end)
  17. # 参数初始化
  18. result = 1 # 判断结果
  19. i = 0 # 循环次数
  20. frequency = 3 # 循环限制次数
  21. # 提示总猜测次数、剩余次数
  22. print('WARNING: You have【{}】 chances you guess '.format(frequency), end = '--&&>>--')
  23. print('【{}】 chances left now:\n'.format(frequency - i +1))
  24. while result and i != frequency:
  25. # 猜数字
  26. num = int(input('Please guess a int_number:\n'))
  27. result = judge_num(num, num_random)
  28. i += 1

7.进制转换

  1. # 任意进制转十进制
  2. def other_to_decimal(hex, num):
  3. # 整型转化为列表,
  4. num_str = str(num)
  5. # map()将List对象中的元素(list类型)转化为集合(set)类型
  6. num_list = list(map(int, num_str))
  7. # 列表反序
  8. num_list = num_list[::-1]
  9. print(list(map(int, num_str)))
  10. # 获取数字位数
  11. digit = len(num_list)
  12. num_decimal = 0
  13. # 累加
  14. for i in range(digit):
  15. numi = num_list[i]
  16. # print(numi, hex**i)
  17. num_decimal += numi*(hex**i) # 对每一位数的幂指数累加
  18. return num_decimal
  19. # 十进制转任意进制
  20. def decimal_to_other(hex, num):
  21. # 获取数字位数
  22. digit = len(str(num))
  23. num_hex = []
  24. quotient = 1
  25. # 相除,余数计入列表num_hex
  26. while quotient:
  27. # 取余和取商
  28. quotient = num // hex
  29. remainder = num % hex
  30. # print(quotient, remainder)
  31. # 余数计入列表
  32. num_hex.append(remainder)
  33. # 商做下一次循环
  34. num = quotient
  35. # 列表反序,通过切片和sort()函数可以实现
  36. num_hex = num_hex[::-1]
  37. # num_hex.sort(reverse=True)
  38. # 如果超过十进制,用ASCII码转化为字母
  39. for i in range(len(num_hex)):
  40. if num_hex[i] > 9:
  41. num_hex[i] = chr(int(num_hex[i])+87)
  42. # print(num_hex)
  43. # 列表转化为字符串
  44. result = (''.join('%s' %m for m in num_hex))
  45. return result
  46. Type = bool(input("十进制转任意进制请输入1,任意进制转十进制请输入0\n"))
  47. if Type:
  48. hex = int(input("需要把十进制转换为多少进制?请输入正整数\n"))
  49. num = int(input("需要转换的数字是:"))
  50. print("换算结果是:", decimal_to_other(hex, num))
  51. else:
  52. hex = int(input("需要把多少进制转换为十进制?请输入正整数\n年"))
  53. num = int(input("需要转换的数字是:"))
  54. print("换算结果是:", other_to_decimal(hex, num))

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载