描述:
输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。十个数字对应的拼音如下:
0: ling
1: yi
2: er
3: san
4: si
5: wu
6: liu
7: qi
8: ba
9: jiu
输入格式:
输入在一行中给出一个整数,如:1234。
提示:整数包括负数、零和正数。
输出格式:
在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格。如 yi er san si。
输入样例:
-600
输出样例:
fu liu ling ling
解析:
- 输入一个数字,字符串形式
 可以构建一个列表,元素为从0到9的拼音,为方便,将负号“-”的拼音加到列表,作为最后一个元素:
ls=[‘ling’,‘yi’,‘er’,‘san’,‘si’,‘wu’,‘liu’,‘qi’,‘ba’,‘jiu’,‘fu’]
遍历字符串:
- 如果遍历到的元素是“-”则输出列表最后一个元素
 - 否则,将遍历到的字符转整数,输出列表中以这个整数为序号的元素
 
题目的输出中还有一个格式控制,要求各元素间用空格分隔,但最后一个元素后不能有空格。有以下几种方法可以实现:
- 先输出除最后一个元素以外的其余元素,用空格做结束符,end = ‘ ‘,再输出最后一个元素
 - 先输出第一个元素,再遍历输出其他元素,输出时在元素前中一个空格,结束符用空字符串,end = ‘’
 - 创建一个空列表,遍历时用append()方法将得到的元素加到列表中,再输出列表元素,默认为空格分隔
 - 用列表推导式直接把遍历到的元素放到列表中,再输出列表元素
 
# 先输出除最后一个元素以外的其余元素,用空格字符串做结束符,end = ' ',再输出最后一个元素num=input()ls,l=['ling','yi','er','san','si','wu','liu','qi','ba','jiu','fu'],[]for i in num[:-1]:if i == '-':print(ls[-1],end = ' ')else:print(ls[int(i)],end = ' ')print(ls[int(num[-1])])
# 先输出第一个元素,再遍历输出其他元素,输出时在元素前加一个空格,结束符用空字符串,end = ''num=input()ls,l=['ling','yi','er','san','si','wu','liu','qi','ba','jiu','fu'],[]for i in num:if i == '-':print(ls[-1],end = ' ')elif num.index(i) == 1:print(ls[int(i)], end='')else:print(' ' + ls[int(i)],end = '')
# 创建一个空列表,遍历时用append()方法将得到的元素加到列表中,再输出列表元素,默认为空格分隔num=input()ls=['ling','yi','er','san','si','wu','liu','qi','ba','jiu','fu']l = []for i in num:if i == '-':print(ls[-1],end = ' ')else:l.append(ls[int(i)])print(*l) # 解包,输出列表l中的元素,默认用空格分隔
# 用列表推导式直接把遍历到的元素放到列表中,再输出列表元素num=input()ls=['ling','yi','er','san','si','wu','liu','qi','ba','jiu','fu']if num[0] == '-':print(ls[-1],end = ' ')else:l = [ls[int(i)] for i in num]print(*l)
此方法是简单的二分支,可以用条件运算实现:
num=input()ls=['ling','yi','er','san','si','wu','liu','qi','ba','jiu','fu']print(ls[-1],end = ' ') if num[0] == '-' else print(*[ls[int(i)] for i in num])
