关键词搜索

源码搜索 ×
×

编程 - 实现简单功能:Python

发布2021-02-22浏览333次

详情内容

  1. 52周存钱挑战
 1 import math
 2 import datetime
 3 
 4 
 5 def save_money_in_n_weeks(money_per_week, increase_money, total_week):
 6     """
 7         计算n周内的存款金额
 8     """
 9 
10     money_list = []  # 记录每周存款数的列表
11     saved_money_list = []   # 记录每周账户累计
12 
13     for i in range(total_week):
14         money_list.append(money_per_week)
15         saving = math.fsum(money_list)
16         saved_money_list.append(saving)
17 
18         # 输出信息
19         # print('第{}周,存入{}元,账户累计{}元'.format(i + 1, money_per_week, saving))
20 
21         # 更新下一周的存钱金额
22         money_per_week += increase_money
23 
24     return saved_money_list
25 
26 
27 def main():
28     """
29         主函数
30     """
31     money_per_week = float(input('请输入每周的存入的金额:'))     # 每周的存入的金额
32     increase_money = float(input('请输入每周的递增金额:'))     # 递增的金额
33     total_week = int(input('请输入总共的周数:'))         # 总共的周数
34 
35     # 调用函数
36     saved_money_list = save_money_in_n_weeks(money_per_week, increase_money, total_week)
37 
38     input_date_str = input('请输入日期(yyyy/mm/dd):')
39     input_date = datetime.datetime.strptime(input_date_str, '%Y/%m/%d')
40     week_num = input_date.isocalendar()[1]
41     print('第{}周的存款:{}元'.format(week_num, saved_money_list[week_num - 1]))
42 
43 if __name__ == '__main__':
44     main()
    1. 利用递归函数绘制分形树
     1 import turtle
     2 
     3 
     4 def draw_branch(branch_length):
     5     """
     6         绘制分形树
     7     """
     8     if branch_length > 5:
     9         # 绘制右侧树枝
    10         turtle.forward(branch_length)
    11         print('向前 ', branch_length)
    12         turtle.right(20)
    13         print('右转 20')
    14         draw_branch(branch_length - 15)
    15 
    16         # 绘制左侧树枝
    17         turtle.left(40)
    18         print('左转 40')
    19         draw_branch(branch_length - 15)
    20 
    21         # 返回之前的树枝
    22         turtle.right(20)
    23         print('右转 20')
    24         turtle.backward(branch_length)
    25         print('向后 ', branch_length)
    26 
    27 
    28 def main():
    29     """
    30         主函数
    31     """
    32     turtle.left(90)
    33     turtle.penup()
    34     turtle.backward(150)
    35     turtle.pendown()
    36     turtle.color('brown')
    37     draw_branch(80)
    38     turtle.exitonclick()
    39 
    40 if __name__ == '__main__':
    41     main()
    复制代码
     
    
     
    
    3. 五角星的绘制
    
    复制代码
     1 import turtle
     2 
     3 
     4 def draw_pentagram(size):
     5     """
     6         绘制五角星
     7     """
     8     # 计数器
     9     count = 1
    10     while count <= 5:
    11         turtle.forward(size)
    12         turtle.right(144)
    13         # count = count + 1
    14         count += 1
    15 
    16 
    17 def draw_recursive_pentagram(size):
    18     """
    19         迭代绘制五角星
    20     """
    21     # 计数器
    22     count = 1
    23     while count <= 5:
    24         turtle.forward(size)
    25         turtle.right(144)
    26         # count = count + 1
    27         count += 1
    28 
    29     # 五角星绘制完成,更新参数
    30     size += 10
    31     if size <= 100:
    32         draw_recursive_pentagram(size)
    33 
    34 
    35 def main():
    36     """
    37         主函数
    38     """
    39 
    40     turtle.penup()
    41     turtle.backward(200)
    42     turtle.pendown()
    43     turtle.pensize(2)
    44     turtle.pencolor('red')
    45 
    46     size = 50
    47     draw_recursive_pentagram(size)
    48 
    49     turtle.exitonclick()
    50 
    51 if __name__ == '__main__':
    52     main()
    
    
    
      45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    1. 汇率兑换
    
    
     1 def main():
     2     """
     3         主函数
     4     """
     5     # 汇率
     6     USD_VS_RMB = 6.47
     7 
     8     # 带单位的货币输入
     9     currency_str_value = input('请输入带单位的货币金额:')
    10 
    11     unit = currency_str_value[-3:]
    12 
    13     if unit == 'CNY':
    14         exchange_rate = 1 / USD_VS_RMB
    15 
    16     elif unit == 'USD':
    17         exchange_rate = USD_VS_RMB
    18 
    19     else:
    20         exchange_rate = -1
    21 
    22     if exchange_rate != -1:
    23         in_money = eval(currency_str_value[:-3])
    24         # 使用lambda定义函数
    25         convert_currency2 = lambda x: x * exchange_rate
    26 
    27         # # 调用函数
    28         # out_money = convert_currency(in_money, exchange_rate)
    29 
    30         # 调用lambda函数
    31         out_money = convert_currency2(in_money)
    32         print('转换后的金额:', out_money)
    33     else:
    34         print('不支持该种货币!')
    35 
    36 if __name__ == '__main__':
    37     main()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    5.基础代谢率计算

     1 def main():
     2     """
     3         主函数
     4     """
     5     y_or_n = input('是否退出程序(y/n)?')
     6 
     7     while y_or_n != 'y':
     8         # # 性别
     9         # gender = input('性别:')
    10         # # print(type(gender))
    11         #
    12         # # 体重 (kg)
    13         # weight = float(input('体重(kg):'))
    14         # # print(type(weight))
    15         #
    16         # # 身高 (cm)
    17         # height = float(input('身高(cm):'))
    18         # # print(type(height))
    19         #
    20         # # 年龄
    21         # age = int(input('年龄:'))
    22         # # print(type(age))
    23         print('请输入以下信息,用空格分割')
    24         input_str = input('性别 体重(kg) 身高(cm) 年龄:')
    25         str_list = input_str.split(' ')
    26 
    27         try:
    28             gender = str_list[0]
    29             weight = float(str_list[1])
    30             height = float(str_list[2])
    31             age = int(str_list[3])
    32 
    33             if gender == '男':
    34                 # 男性
    35                 bmr = (13.7 * weight) + (5.0 * height) - (6.8 * age) + 66
    36             elif gender == '女':
    37                 # 女性
    38                 bmr = (9.6 * weight) + (1.8 * height) - (4.7 * age) + 655
    39             else:
    40                 bmr = -1
    41 
    42             if bmr != -1:
    43                 print('您的性别:{},体重:{}公斤,身高:{}厘米,年龄:{}岁'.format(gender, weight, height, age))
    44                 print('您的基础代谢率:{}大卡'.format(bmr))
    45             else:
    46                 print('暂不支持该性别')
    47         except ValueError:
    48             print('请输入正确的信息!')
    49         except IndexError:
    50             print('输入的信息过少!')
    51         except:
    52             print('程序异常!')
    53 
    54         print()  # 输出空行
    55         y_or_n = input('是否退出程序(y/n)?')
    56 
    57 
    58 if __name__ == '__main__':
    59     main()
    
      45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59

    6.模拟掷骰子

     1 import matplotlib.pyplot as plt
     2 import numpy as np
     3 
     4 # 解决中文显示问题
     5 plt.rcParams['font.sans-serif'] = ['SimHei']
     6 plt.rcParams['axes.unicode_minus'] = False
     7 
     8 
     9 def main():
    10     """
    11         主函数
    12     """
    13     total_times = 10000
    14 
    15     # 记录骰子的结果
    16     roll1_arr = np.random.randint(1, 7, size=total_times)
    17     roll2_arr = np.random.randint(1, 7, size=total_times)
    18     result_arr = roll1_arr + roll2_arr
    19 
    20     hist, bins = np.histogram(result_arr, bins=range(2, 14))
    21     print(hist)
    22     print(bins)
    23 
    24     # 数据可视化
    25     plt.hist(result_arr, bins=range(2, 14), edgecolor='black', linewidth=1, rwidth=0.8)
    26 
    27     # 设置x轴坐标点显示
    28     tick_labels = ['2点', '3点', '4点', '5点',
    29                    '6点', '7点', '8点', '9点', '10点', '11点', '12点']
    30     tick_pos = np.arange(2, 13) + 0.5
    31     plt.xticks(tick_pos, tick_labels)
    32 
    33     plt.title('骰子点数统计')
    34     plt.xlabel('点数')
    35     plt.ylabel('频率')
    36     plt.show()
    37 
    38 
    39 if __name__ == '__main__':
    40     main()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    7.输入某年某月某日,判断这一天是这一年的第几天?

     1 from datetime import datetime
     2 
     3 
     4 def is_leap_year(year):
     5     """
     6         判断year是否为闰年
     7         是,返回True
     8         否,返回False
     9     """
    10     is_leap = False
    11 
    12     if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
    13         is_leap = True
    14 
    15     return is_leap
    16 
    17 
    18 def main():
    19     """
    20         主函数
    21     """
    22     input_date_str = input('请输入日期(yyyy/mm/dd):')
    23     input_date = datetime.strptime(input_date_str, '%Y/%m/%d')
    24 
    25     year = input_date.year
    26     month = input_date.month
    27     day = input_date.day
    28 
    29     # # 包含30天 月份集合
    30     # _30_days_month_set = {4, 6, 9, 11}
    31     # _31_days_month_set = {1, 3, 5, 7, 8, 10, 12}
    32 
    33     # 月份-天数 字典
    34     month_day_dict = {1: 31,
    35                       2: 28,
    36                       3: 31,
    37                       4: 30,
    38                       5: 31,
    39                       6: 30,
    40                       7: 31,
    41                       8: 31,
    42                       9: 30,
    43                       10: 31,
    44                       11: 30,
    45                       12: 31}
    46 
    47     day_month_dict = {30: {4, 6, 9, 11},
    48                       31: {1, 3, 5, 7, 8, 10, 12}}
    49 
    50     # 初始化值
    51     days = 0
    52     days += day
    53 
    54     for i in range(1, month):
    55         days += month_day_dict[i]
    56 
    57     if is_leap_year(year) and month > 2:
    58         days += 1
    59 
    60     print('这是{}年的第{}天。'.format(year, days))
    61 
    62 
    63 if __name__ == '__main__':
    64     main()
    
      45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64

    复制代码

    1. 判断密码强度
      1 class PasswordTool:
      2     """
      3         密码工具类
      4     """
      5     def __init__(self, password):
      6         # 类的属性
      7         self.password = password
      8         self.strength_level = 0
      9 
     10     def process_password(self):
     11         # 规则1:密码长度大于8
     12         if len(self.password) >= 8:
     13             self.strength_level += 1
     14         else:
     15             print('密码长度要求至少8位!')
     16 
     17         # 规则2:包含数字
     18         if self.check_number_exist():
     19             self.strength_level += 1
     20         else:
     21             print('密码要求包含数字!')
     22 
     23         # 规则3:包含字母
     24         if self.check_letter_exist():
     25             self.strength_level += 1
     26         else:
     27             print('密码要求包含字母!')
     28 
     29     # 类的方法
     30     def check_number_exist(self):
     31         """
     32             判断字符串中是否含有数字
     33         """
     34         has_number = False
     35 
     36         for c in self.password:
     37             if c.isnumeric():
     38                 has_number = True
     39                 break
     40 
     41         return has_number
     42 
     43     def check_letter_exist(self):
     44         """
     45             判断字符串中是否含有字母
     46         """
     47         has_letter = False
     48         for c in self.password:
     49             if c.isalpha():
     50                 has_letter = True
     51                 break
     52         return has_letter
     53 
     54 
     55 class FileTool:
     56     """
     57         文件工具类
     58     """
     59     def __init__(self, filepath):
     60         self.filepath = filepath
     61 
     62     def write_to_file(self, line):
     63         f = open(self.filepath, 'a')
     64         f.write(line)
     65         f.close()
     66 
     67     def read_from_file(self):
     68         f = open(self.filepath, 'r')
     69         lines = f.readlines()
     70         f.close()
     71         return lines
     72 
     73 
     74 def main():
     75     """
     76         主函数
     77     """
     78 
     79     try_times = 5
     80     filepath = 'password_6.0.txt'
     81     # 实例化文件工具对象
     82     file_tool = FileTool(filepath)
     83 
     84     while try_times > 0:
     85 
     86         password = input('请输入密码:')
     87         # 实例化密码工具对象
     88         password_tool = PasswordTool(password)
     89         password_tool.process_password()
     90 
     91         line = '密码:{}, 强度:{}\n'.format(password, password_tool.strength_level)
     92         # 写操作
     93         file_tool.write_to_file(line)
     94 
     95         if password_tool.strength_level == 3:
     96             print('恭喜!密码强度合格!')
     97             break
     98         else:
     99             print('密码强度不合格!')
    100             try_times -= 1
    101 
    102         print()
    103 
    104     if try_times <= 0:
    105         print('尝试次数过多,密码设置失败!')
    106 
    107     # 读操作
    108     lines = file_tool.read_from_file()
    109     print(lines)
    110 
    111 
    112 if __name__ == '__main__':
    113     main()
    
      45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113

    记录有用的信息和python基础教程数据,并分享!

    相关技术文章

    最新源码

    下载排行榜

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

    提示信息

    ×

    选择支付方式

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