3. 念数字. 给出一个字典. 在字典中标识出每个数字的发音. 包括相关符号.
然后由用户输入一个数字. 让程序读出相对应的发音(不需要语音输出. 单纯的打印即可)
做这道题的时候还是偷了些懒,比如就忽略了小数和负数,反正难点不在这.
思路是:
以每四位数为单位读取,每四位之间加个万,每八位之间加个亿(你跟我提兆?告辞),然后除去不符合读法的零
另外还有个除⑩取余法写起来应该更简单,下次有空写一遍,毕竟方法一的代码太不优雅了,还有个输入数字必须是4的整数倍的bug也懒得去改了
dic = { '-':'fu', '0':'ling', '1':'yi', '2':'er', '3':'san', '4':'si', '5':'wu', '6':'liu', '7':'qi', '8':'ba', '9':'jiu', '.':'dian', '' : '', '*':'shi', '**':'bai', '***':'qian', '****':'wan', } num = input('请输入一个数字') duyin = [] n = 0 flag = 0 k = len(num) // 4 for index in range(k,0,-1): lst = [] lst.extend(num[(index-1)*4:index*4]) for i in range(len(lst)): n = lst.pop() if n != '0': duyin.append(dic[n]+dic['*' * i]) else: duyin.append('ling') for i in range(0,len(num),4): if i % 4 == 0 and i != 0: if i % 8 == 0: if duyin[i] == 'ling': duyin[i] = 'yi' else: duyin[i] += 'yi' else: if duyin[i] == 'ling': duyin[i] = 'wan' else: duyin[i] += 'wan' lst_del =[] duyin = list(reversed(duyin)) for i in range(len(duyin),0,-1): if duyin[i-1] == 'wan' or duyin[i-1] == 'yi': if i > 1 and duyin[i-2] == 'ling': lst_del.append(i-2) if i > 2 and duyin[i-3] == 'ling': lst_del.append(i-3) if i > 3 and duyin[i-4] == 'ling': lst_del.append(i-4) if i > 1 and duyin[i-1] == duyin[i-2] : lst_del.append(i-1) if len(lst_del) > 1 and lst_del[-1] >lst_del[-2]: lst_del.pop() for i in lst_del: duyin.pop(i) if duyin[-1] == 'ling':duyin.pop() print(duyin)