1 实现四舍五入,禁止使用python内建函数。
func(soure_num, precise),source_num为需要处理的数据,precise为需要保留的位数
"""
File: 01四舍五入.py
Author: chde_wang
Date: 2020-08-09 12:14:59
Description:实现四舍五入,禁止使用python内建函数。
func(soure_num, precise),source_num为需要处理的数据,precise为需要保留的位数1.判断输入的是否为数字
2.是否为浮点数
3.
"""def func(source_num, precise_num):source_num_str = str(source_num)source_num_list = source_num_str.split('.')print("四舍五入后数值为:", end='')float_str = ''# 对保留位数进行判断if precise_num < 0:print("保留位数没意义!")elif precise_num == 0:if int(source_num_list[-1]) == 0:float_str = int(source_num_str)else:if int(source_num_list[-1][-1]) >= 5:float_list = list(source_num_list[-1])float_list[-1] = str(int(float_list[-1]) + 1)float_str = ''.join(float_list)else:float_str = source_num_list[0]print(float_str)# 保留位数有意义,且是整数else:# 整数补零if source_num_list[-1] == '0':if precise_num != 0:float_len = len(source_num_list[-1])float_list = list(source_num_list[-1])num_zero = precise_num - float_lenfor i in range(num_zero):float_list.append('0')float_str = ''.join(float_list)# 是小数else:# 保留位数等于小数位数if len(source_num_list[-1]) == precise_num:float_str = source_num_list[-1]# 保留位数小于小数位数 补零elif len(source_num_list[-1]) < precise_num:float_len = len(source_num_list[-1])float_list = list(source_num_list[-1])num_zero = precise_num - float_lenfor i in range(num_zero):float_list.append('0')float_str = ''.join(float_list)# 保留位数大于小数位数else:# 保留位后一位大于等于5 进位if int(source_num_list[-1][precise_num]) >= 5:float_list = list(source_num_list[-1])float_list[precise_num-1] = str(int(float_list[precise_num-1])+1)float_str = ''.join(float_list)if precise_num == 1:float_str = float_str[0]else:float_str = float_str[0:precise_num]else:float_str = source_num_list[-1][0:precise_num]str_list = [source_num_list[0], '.', float_str]str_list = ''.join(str_list)print(str_list)source_num = input("请输入数据:") # 12.3434345
precise_num = input("请输入保留位数:")
try:source_num = float(source_num)precise_num = int(precise_num)func(source_num, precise_num)
except ValueError:print("您输入的不是数字!")
没有实现保留0位小数的进制问题。
修改 参考梦园:
"""
File: 03四舍五入参考梦园.py
Author: chde_wang
Date: 2020-08-17 22:57:09
Description:
"""def func_round_me(num=0, precision=0):digit = 10**precisionint_num = float(int(num * digit))flag = str(num).find('.')flag_tag = str(num)[flag+precision+1]if num >= 0:if int(flag_tag) >= 5:int_num = (int_num + 1) / digitelse:int_num = int_num / digitelse:if int(flag_tag) >= 5:int_num = (int_num - 1) / digitelse:int_num = int_num / digitreturn int_numtry:num = float(input("请输入数值:"))precision = int(input("请输入保留位数:"))
except ValueError:print("输入错误!")
print("{}保留{}位小数,四舍五入后的结果为{}".format(num, precision, func_round_me(num, precision)))
2实现reduce的功能,请自行百度内建函数reduce的功能
"""
File: reduce实现.py
Author: chde_wang
Date: 2020-08-09 19:57:55
Description:实现reduce的功能,请自行百度内建函数reduce的功能
"""def foo(*args):if len(args) <= 2:# 判断第一个参数为可迭代类型try:if isinstance(args[0], (list,tuple)):# 第一个参数不为空if args[0]:# 第二个参数不为空if args[1]:# 两个参数类型一致if type(args[0][0]) == type(args[1]):if len(str(args[0])) == 1:return args[0] + args[1]else:sum = args[1]for i in range(len(args[0])):sum += args[0][i]return sumelse:print("类型不一致!")# 第二个参数为空else:if type(args[0][0] == 'str'):sum = ''elif type(args[0][0] == 'int'):sum = 0for i in range(len(args[0])):sum += args[0][i]return sum# 第一个参数为空 第二个参数不为空elif args[1]:return args[1]else:print("参数为空")except TypeError:print("类型不一致")def my_reduce(fun_name, arg1, arg2=0):if fun_name(arg1, arg2):print(fun_name(arg1,arg2))my_reduce(foo, ['1', '2'], '1')
修改(参考梦园):
from collections import Iterable
def my_reduce(fun_name, arg1, arg2=None):if arg2:if isinstance(arg1, Iterable):value = arg2for i in arg1:value=fun_name(value,i)return value
print(my_reduce(add,[1,2,3,4],5))
如何替换字符串中指定位置的字符呢?
字符串转换列表替换并转换解决:
def replace_char(string,char,index):string = list(string)string[index] = charreturn ''.join(string)
参考自https://www.cnblogs.com/bingoTest/p/10449941.html