念数字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(' ', ' ')) # 将全部都打印出来
念数字python_念数字解题相关推荐
- java求幸运数字_幸运数字问题 —— Java实现
题目描述 小雅同学认为6,8是她的幸运数字,而其他数字均不是,一个幸运数是指在十进制表示下只含有幸运数字的数.给定你一个区间(a,b)a和b之间(其中包括a和b幸)运数的个数. 输入描述 输入两个整数 ...
- 数字下变频和数字上变频
在超外差式接收机中,如果经过混频后得到的中频信号比原始信号低,那么此种混频方式叫做下变频 (Down Converter or DC).将射频信号通过一次或者几次的模拟下变频转换到中频上,在中频对信号 ...
- 无重复数字的随机数字数组
这几天看MFC,头晕眼花,也觉得没有什么可以写的. 今天学习之余,看到一个面试题"1000个范围0-2000的数字,进行排序打印出来".就想着实现一下. 第一步先要建立1000个范 ...
- python数字类型-Python数字类型介绍
数据类型介绍 Python数据类型可分为:数字型和非数字型 数字型 整型(int) 浮点型(float) 布尔型(bool) 真(True) 假(False) 复数型(complex) 主要用于科学计 ...
- python数字类型-Python3 - 数字类型
在 Python 中,数字并不是一个真正的对象类型,而是一组类似类型的分类.Python 不仅支持通常的数字类型(整数和浮点数),而且还能够通过常量去直接创建数字以及处理数字的表达式.数字数据类型是不 ...
- php 大数运算类,PHP采用超长(超大)数字运算防止数字以科学计数法显示的方法
本文实例讲述了PHP采用超长(超大)数字运算防止数字以科学计数法显示的方法.分享给大家供大家参考,具体如下: PHP计算大数值运算时会出错,当数字太大时,数值会变成科学计数.那怎么来进行PHP超大数值 ...
- python 如何将数字字符串转换为数字?
将单个数字字符串转换为数字 def char2num(s):return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7 ...
- oracle 非数字型转数字型
原文:oracle 非数字型转数字型 oracle中如果一个字段内容不全是数字型 可以通过以下方式过滤 to_number(substr(translate(a.vital_signs_cvalues ...
- C++将数字A转换为数字B所需的翻转次数算法实现(附完整源码)
C++将数字A转换为数字B所需的翻转次数算法实现 C++将数字A转换为数字B所需的翻转次数算法实现完整源码(定义,实现,main函数测试) C++将数字A转换为数字B所需的翻转次数算法实现完整源码(定 ...
最新文章
- 深圳腾讯内部Jetpack宝典意外流出!极致经典,堪称Android架构组件的天花板
- python开发需要掌握哪些知识-Python的8个基础知识点,新手必须背下来!
- 模拟网络通信中存储转发的分组交换算法
- sql注入***原理
- gps有几个轨道面_嫦五“一脚刹车”,进了环月轨道
- 研究死锁–第5部分:使用显式锁定
- 实现服务器和客户端数据交互,Java Socket有妙招
- nas存储服务器 文件夹加密,NAS网络存储服务器储备数据的安全性怎么样?
- 有人问我:Linux下命令行里 password:的时候 用键盘密码打不了
- python实现希尔排序(已编程实现)
- fedora 主题美化
- Simulink里的S函数介绍(Matlab-1)
- JDY-24M级蓝牙简介
- 教你如何用两个栈实现一个队列
- 深入理解SD卡基础原理以及内部结构的总结
- 台湾嵌入式软硬件厂商组建联盟 欲分Gphone一杯羹
- 高通骁龙845与骁龙710处理器参数对比分析
- #把一个数把各个位数拆取出来
- 径向基函数模型matlab,径向基函数RBF.ppt
- 运维学python用不上_运维朋友们,别再问需不需要学 Python 了!