--Python 4、编写程序,根据用户输入的数字转换成相应的中文的大写数字。例如,1.23转换为“壹点贰叁”。
问题遇到的现象和发生背景
输入含有0就不会输出
问题相关代码
import jieba
ChineseNum = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']
unit = ['', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿']
#while(True):
# 单独判断整数部分 因为防止用户只输入整数 不输入小数 translate函数中的jieba._lcut_all容易出错
def turn(words):
i = 0
ww = ''
number = int(words)
# print(number)
while number>0:
if number % 10:
ww = ChineseNum[number % 10] + unit[i] + ww #逐位转化
else:
continue
i += 1
number = int(number / 10)
return ww
def translate(s):
words = s
if '.' in words:
words = jieba._lcut_all(words)
num_Int = int(words[0]) # 目前看来应该只有整数部分需要转为int类型判断
num_Dot = words[1]
num_Float = words[2]
ss = ''
# 整数部分
# 符号
if num_Dot:
num_Dot = '点'
# 小数部分
for i in range(len(num_Float)):
strx = ChineseNum[int(num_Float[i])]
ss = ss + strx
str_Int = turn(num_Int)
print(str_Int + num_Dot + ss)
else:
print(turn(words))
s = input('请输入数字:')
translate(s)
运行结果及报错内容
接下来输入含有0的数据:
始终得不到输出结果
我的解答思路和尝试过的方法
感觉是while循环中出了问题但是没有更好的修改方案
def turn(words):
i = 0
ww = ''
number = int(words)
# print(number)
while number>0:
if number % 10:
ww = ChineseNum[number % 10] + unit[i] + ww #逐位转化
else:
continue
i += 1
number = int(number / 10)
return ww
我想要达到的结果
输入输出正常