2022(秋)实验一:使用Python语言解决数学应用题

Azad549 2022-11-22 13:56:30

1 实验目的

  1. 灵活运用Python的分支语句和循环语句;
  2. 锻炼学生算法设计能力。

2 实验内容

    本实验将编写Python程序解决2道应用题:猴子吃桃和数字千分位。

    1、猴子吃桃

    猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少个桃子?

  2、数字千分位

千位分隔符,其实就是数字中的逗号。依西方的习惯,人们在数字中加进一个符号,以免因数字位数太多而难以看出它的值。所以人们在数字中,每隔三位数加进一个逗号,也就是千位分隔符,以便更加容易认出数值。

    处理财务数据时,经常会和千分位符号打交道。经常看数字时,如果位数很多,往往要一位位的数,才知道具体的金额。如果有千分位符,那么一眼就知道金额的具体大小。目前千分位符在手机银行和计算器中较常见。

    现编写2个函数,1个函数输入带千分位符的字符串(带千分位符就不再是数字了)输出数字,另1个函数输入数字(如果数字是小数则只保留小数点后2位)输出带千分位符的字符串。

 

3 实验过程

1. 猴子吃桃

1.1 解题思路

    第一天的桃子数量,等于第二天的桃子数量加1然后乘以2

    第二天的桃子数量,等于第三天的桃子数量加1然后乘以2

    第三天的桃子数量,等于第四天的桃子数量加1然后乘以2

    第四天的桃子数量,等于第五天的桃子数量加1然后乘以2

    第五天的桃子数量,等于第六天的桃子数量加1然后乘以2

    第六天的桃子数量,等于第七天的桃子数量加1然后乘以2

    第七天的桃子数量,等于第八天的桃子数量加1然后乘以2

    第八天的桃子数量,等于第九天的桃子数量加1然后乘以2

    第九天的桃子数量,等于第十天的桃子数量加1然后乘以2

    第十天桃子的数量为1个

    很明显,前一天的桃子数量等于后一天的数量加1然后乘以2

 1.2编程实现:

def compute_eat_peach(day):
    peaches=1 #设置桃子数量的指数,并初始化为1
    for i in range(day): #for循环day次
        print("第"+str(day-i)+"天有"+str(peaches)+"个桃子") #输出第几天有几个桃子
        peaches=2*(peaches+1) #计算前一天的桃子数量
compute_eat_peach(10)

 

1.3输出结果:

3.2 数字千分位

3.2.1 解题思路

    1、去掉千分位

    遍历字符串将逗号删除,最后将字符串转换为整数/小数并输出结果。

    2、添加千分位

    由于小数点后面只保留2位小数,则我们把重点放在整数部分。

    千分位符是从右边开始,每隔3位数添加一个英文逗号,那么先把数字左右倒转(如23456->65432),然后遍历字符串每隔3个字符添加一个英文逗号,然后再次将字符串左右倒转,最后输出结果。

    如果输入的数字是整数,流程如上。

    如果输入的数字是小数,首先将小数拆分为整数部分和小数部分,最后将处理后的整数部分和原始的小数部分拼接起来作为结果输出。

 

1.2编程实现:

 #去掉千分位
def remove_thousand_symbol(num_str):
   for i in num_str:
        if i==',':
            continue
        print(i,end="")
remove_thousand_symbol("12,345.67")
#增加千分位
def add_thousand_symbol(number):
    num_str=str(number)
    num_str_list=num_str.split('.')
    num_int=num_str_list[0]
    if len(num_str_list)==1:
        num_float=None
    else:
        num_float = num_str_list[1]
    reversed_num_int=num_int[::-1]
    t = []
    for i in range(len(reversed_num_int)):
        if i>0 and i%3==0:
            t.append(',')
            t.append(reversed_num_int[i])
        else:
            t.append(reversed_num_int[i])
    t_str=''.join(t)
    new_num_int=t_str[::-1]
    if num_float:
        print(new_num_int+'.'+num_float)
    else:
        print(new_num_int)
add_thousand_symbol(123456789.12)

 

1.3输出结果:

4.心得体会

一开始做的时候还有些不懂,在老师给的代码和同学的帮助下逐渐找到感觉,自己慢慢也有些理解

...全文
180 回复 打赏 收藏 举报
写回复
回复
切换为时间正序
请发表友善的回复…
发表回复
发帖
Python程序设计基础

2274

社区成员

软件工程老师
python 高校 江苏省·南通市
社区管理员
  • juking@ntu
加入社区
帖子事件
编辑了帖子 (查看)
2022-11-22 13:58
创建了帖子
2022-11-22 13:56
社区公告
暂无公告