数字大小写转换:如何把“0123456789”转换成“零一二三四五六七八九”?

蜗牛日记20200218
中国大学MOOChttp://www.icourse163.org
《Python语言程序设计》(11期)
2020年02月18日 10:00 – 2020年05月12日 23:30
第一周
练习
程序设计第3题

题目要求:
《数字大小写转换:如何把“0123456789”转换成“零一二三四五六七八九”?》
代码:
解法1:
利用遍历循环for
具体来说是字符串遍历循环(for c in s)。input 获取的实质是一个字符串,那么遍历每一个字符,找出对应的要转换的字符(字符索引num[]),依次打印出来,并且不空格不换行(用end =’’),就可以了。

num = input()
numstr = '零一二三四五六七八九'
for i in num:
    print(numstr[eval(i)],end='')

解法2:
利用无限循环while

num =input()
numstr = '零一二三四五六七八九'
n = ''
i = 0
while i< len(num):
    n = n+numstr[eval(num[i])] #字符串操作符+,连接xy但不表示数值运算
    i+=1
print (n)

解法2的另一种写法

num = input()
numstr ='零一二三四五六七八九'
n = ''
i = 0
while i < len(num):
    n = numstr[eval(num[i])]
    i += 1
    print(n,end = '')

解答思路:
目标:将小写数字与大写数字一一对应。
思路:
发现规律:
小写数字是数字,大写数字实质是字符串,怎样找到对应关系呢?思考一下可以发现,既然字符串的索引是用数字排序(从0到-1)的,如果找到小写数字与排序之间的规律,就可以解决问题了。不难发现,“零一二三四五六七八九”对应的排序正是“0、1、……9”,序号本身就是字符对应的小写数字。那么将input获得的小写数字作为索引序号,将字符输出即可。
应用函数:
由于input输入的小写数字是多位的,需要依次把第一位、第二位……的对应的大写字符输出。可以用while函数,循环次数小于数字位数(比如123,长度是3,而字符串序号最大是2,当i=2时,已经循环了三次(i=0、1、2),也输出了三个字符)

    原文作者:风月同天
    原文地址: https://blog.csdn.net/sh001001001/article/details/104379511
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞