python练习册(五)

1.使用循环输出等腰三角形 例如给定 输出如下结果
   *
  ***
 *****
*******
解题思路:先找出行和列的关系:
行  1  2   3   4 行
列  1  3    5   7  正好是(行*2-1)
空格是第一行  3  第二行 2  第三行 1 第四行 0  用(行数-1)
 
for i in range(1,5):
    for j in range(1,5-i):
        print(" ",end="")
    for m in range(1,2*i):
        print("*",end="")
    print()

 2.数字转人民币的读法

例如输入浮点数:123478.09  转成人民币读法:壹十贰万叁仟肆佰柒十捌点零玖

解题思路:

分开处理整数部分和小数部分 小数部分的处理比较简单,直接截断保留 位数字,转换
成几角几分的字符串。整数部分的处理则稍微复杂 点,但只要认真分析不难发现,中国的数字习
惯是 节的,一个 位的数字可被转成几千几百几十几,至于后面添加什么单位则不确定,如
果这节 位数字出现在 ,则后面添加单位“ 飞如果这节 数字出现在 位,则后面
添加单位“万”:如果这节 位数 出现在 12 位,则后面添加单位“亿”:多于 12 位就暂不考
虑了。

def divide(num):
    integer = int(num)
    fraction = round((num - integer)*100)
    return(str(integer),str(fraction))

han_list= ["","","","","","","","","",""]
unit_list = ["","",""]

def four_to_hanstr(num_str):
    result = ""
    num_len = len(num_str)
    for i in range(num_len):
        num = int(num_str[i])
        if i!=num_len - 1 and num!= 0:
            result +=han_list[num]+unit_list[num_len-2-i]
        elif num==0:
            if result.find("")==-1:
                result+=""
        else:
            result+=han_list[num]
    if result.endswith(""):
        return  result.replace(""," ")
    else:
        return result

"""
将数字字符串转成汉字字符串,num_str是需要被转换的数字字符串
"""
def integer_to_str(num_str):
    str_len = len(num_str)
    if str_len > 12:
        print("数字太大了,翻译不了")
        return
    elif str_len > 8:
        return four_to_hanstr(num_str[:-8])+"亿"+four_to_hanstr(num_str[-8:-4])+""+four_to_hanstr(num_str[-4:])
    elif str_len > 4:
        return four_to_hanstr(num_str[:-4])+""+four_to_hanstr(num_str[-4:])
    else:
        return four_to_hanstr(num_str)

def decimal_to_str(num_str):
    try:
        num_str=str(num_str)
    except Exception as e:
        print("转换错误,不能转换成字符串")
    result=""
    num_len=len(num_str)
    if num_len==1:
        num = int(num_str[0])
        result+=""+han_list[num]
    else:
        for i in range(num_len):
            num=int(num_str[i])
            result+=han_list[num]
    return result


num=0.0
try:
    num=float(input("请输入一个浮点数:"))
except Exception as e:
    print("输入的不是浮点数,请重新输入")
integer,fraction = divide(num)
print(integer)
print(fraction)
print(integer_to_str(integer)+decimal_to_str(fraction))

 

 
 
 
 
posted @ 2022-10-25 09:43  小杉虎  阅读(68)  评论(0编辑  收藏  举报
/* 点击爆炸效果*/
// /* 鼠标点击求赞文字特效 */ /*鼠标跟随效果*/ /* */