编写一段python程序,使用input函数接收用户输入的100以内的正整数,将正整数转换为中文描述,下面是转换的示例
4 转换后为 四
58 转换后为 五十八
要求如下:
如果输入数值小于10,直接转换与之对应的中文数字,如果输入数值大于等于10小于100,则需要分别计算出十分位和个位数,分别进行转换,最后在中间加入"十"即可,对于5,60这样的数值,个位数是0,转换为空字符串就能满足要求。
number_dict = {
1: "一",
2: "二",
3: "三",
4: "四",
5: "五",
6: "六",
7: "七",
8: "八",
9: "九",
}
首先定义一个字典,保存1到9所对应的中文数字,这样可以方便转换,不需要用if 语句做条件判断来计算转换后的中文。
while True:
value = input("请输入一个100以内的正整数:")
if value == "q":
break
if not value.isdigit():
continue
value = int(value)
if value >= 100:
continue
对退出输入的判断要放在最上面,如果用户输入的不是数字则使用conitnue语句退出当前循环,让用户继续输入,字符串的isdigit方法可用于判断字符串的内容是不是数字。
如果用户输入大于等于100, 就不处理了,因为处理逻辑太复杂,初学者难以理解。
if value < 10:
print(f"转换后: {number_dict[value]}")
continue
10以内的数值转换最简单,从字典中查出来数字所对应的中文数字,这里我使用了continue而没有使用else语句,目的是为了减少缩进的层次,对大于等于10的情况的处理逻辑可以和这个if 语句保持相同的缩进,让代码看着更美观。
units = value // 10
units = number_dict[units]
ones = value % 10
if ones == 0:
ones = ""
else:
ones = number_dict[ones]
print(f"转换后: {units}十{ones}")
value // 10 得到的是十位数
ones = value % 10 得到的是个位数,如果个位数是0,则对ones赋值为空字符串,转为中文数字时,个位的0是不会用中文来表示的。
十位与个位之间用“十”连接,得到的就是转换后的中文数字。
number_dict = {
1: "一",
2: "二",
3: "三",
4: "四",
5: "五",
6: "六",
7: "七",
8: "八",
9: "九",
}
while True:
value = input("请输入一个100以内的正整数:")
if value == "q":
break
if not value.isdigit():
continue
value = int(value)
if value >= 100:
continue
if value < 10:
print(f"转换后: {number_dict[value]}")
continue
units = value // 10
units = number_dict[units]
ones = value % 10
if ones == 0:
ones = ""
else:
ones = number_dict[ones]
print(f"转换后: {units}十{ones}")
QQ交流群: 211426309