题解 | 学英语
学英语
https://www.nowcoder.com/practice/1364723563ab43c99f3d38b5abef83bc?tpId=37&rp=1&ru=%2Fexam%2Foj%2Fta&qru=%2Fexam%2Foj%2Fta&sourceUrl=%2Fexam%2Foj%2Fta%3FtpId%3D37&difficulty=&judgeStatus=&tags=&title=&gioEnter=menu&dayCountBigMember=365%E5%A4%A9
def one(num):
switcher = {
1: "one",
2: "two",
3: "three",
4: "four",
5: "five",
6: "six",
7: "seven",
8: "eight",
9: "nine",
}
return switcher.get(num, "")
def two_less_20(num):
switcher = {
10: "ten",
11: "eleven",
12: "twelve",
13: "thirteen",
14: "fourteen",
15: "fifteen",
16: "sixteen",
17: "seventeen",
18: "eighteen",
19: "nineteen",
}
return switcher.get(num, "")
def ten(num):
switcher = {
2: "twenty",
3: "thirty",
4: "forty",
5: "fifty",
6: "sixty",
7: "seventy",
8: "eighty",
9: "ninety",
}
return switcher.get(num, "")
def two(num):
if not num:
return ""
elif num < 10:
return one(num)
elif num < 20:
return two_less_20(num)
else:
tenner = num // 10
rest = num % 10
return ten(tenner) + ("" if rest == 0 else " " + one(rest))
def split_number_into_threes(number):
# 将数字转换为字符串
num_str = str(number)
# 计算有多少位
length = len(num_str)
# 使用切片和步长从右向左每三位进行切分
parts = [num_str[max(i - 3, 0) : i] for i in range(length, 0, -3)]
# 返回一个从左到右的分割结果
return parts[::-1]
def hunderd(num):
if len(num) == 1:
return one(int(num))
hundred = int(num) // 100
rest = int(num) % 100
if hundred and rest:
return one(hundred) + " hundred and " + two(rest)
elif not hundred and rest:
return two(rest)
elif hundred and not rest:
return one(hundred) + " hundred"
num_split = split_number_into_threes(input())
result = []
for i in range(len(num_split) - 1, -1, -1):
result.append(hunderd(num_split[i]))
result = result[::-1]
if len(num_split) == 3:
print(result[0] + " million " + result[1] + " thousand " + result[2])
elif len(num_split) == 2:
print(result[0] + " thousand " + result[1])
else:
print(result[0])
方法比较笨,但是比较直观易懂
查看15道真题和解析
