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))