念数字python_念数字解题

'''念数字.  给出一个字典. 在字典中标识出每个数字的发音.

包括相关符号. 然后由用户输入一个数字. 让程序读出相对应的发音

(不需要语音输出. 单纯的打印即可)'''dic={'-': 'fu','0': 'ling','1': 'yi','2': 'er','3': 'san','4': 'si','5': 'wu','6': 'liu','7': 'qi','8': 'ba','9': 'jiu','.': 'dian'}

c= ['', 'shi', 'bai', 'qian']#返回值的位数

defweiShu(num):

n= 1

# 取绝对值

num=abs(num)while num // 10 ** n !=0:

n+= 1

else:returnnwhile 1:

nums=[]

nums23=[] # 存放整数部分分割的字符串

lst=[]

numXiaoshu=[] # 存放小数部分的分割字符串

num= input('请输入一个数:').strip()if '.' in num and len(num.split('.'))==2: # 确保只有一个小数点

num, xiaoshu= num.split('.')

numXiaoshu.append(dic['.']) # 把小数点对应的dian加入for i inxiaoshu: # 取出小数部分的每一位

numXiaoshu.append(dic[i])#print(numXiaoshu)

if num.strip('-').isdigit(): # 先去掉负号统一处理

n=weiShu(int(num)) # 判断当前的数是多少位

s= ''ii= -1

# 遍历全部输出4位4位进行处理

for i inrange(n):if i % 4 ==0: # 4位4位处理,大于4位加‘wan’,大于8位加‘yi’if s != '':

nums.append(s)

s= ''s= num[ii] +s

ii-= 1 # 从后往前数

else:

nums.append(s) # 4位4位添加到列表#输出分割的东西

#print(nums)

j = 1

for num2 innums:

jjj=len(num2) # 主要控制shi,bai,qianfor i innum2:if i == '0':try:if lst[-1] !=dic[i]: # 如果上一个也为0则不将当前的0插入多个0读成一个0

lst.append(dic[i])except:

lst.append(dic[i])else:

# 如果非零则添加,并添加shi,bai,qian

lst.append(dic[i])

lst.append(c[jjj- 1])

jjj= jjj - 1

if lst[-1] == 'ling': # 去掉末尾的零

lst.pop()

final= ' '.join(lst).replace('yi shi', 'shi') # 把yishi的读法改成shi

nums23.append(final) # 添加到整数部分列表中

lst=[]else:print('输入有误,请重新输入!')continue

if n == 1 and int(num) ==0: # 处理输入全都是0的情况

nums23= ['ling']

l=len(nums23) # 判断有多少个4位4位的if '-' innum: # 处理负数的情况

nums23.append(dic['-'] + ' ')

# 处理wan,yi,zhao的添加if l == 1:pass

elif l == 2:

nums23[1] += 'wan'

elif l == 3:#print(nums23)

if nums23[1].strip() != '':

nums23[1] += 'wan'

if nums23[2].strip() != '':

nums23[2] += 'yi'

elif l == 4:if nums23[1].strip() != '':

nums23[1] += 'wan'

if nums23[2].strip() != '':

nums23[2] += 'yi'

if nums23[3].strip() != '':

nums23[3] += 'zhao'

else:print('你输入的数字有点大呀!请重新输入!')continuenums23=nums23[::-1] # 处理完之后读法是倒放的,取倒

nums23.append(' '.join(numXiaoshu)) # 添加小数部分的东西print(''.join(nums23).strip().replace(' ', ' ')) # 将全部都打印出来

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值