题目描述
The 1-digit numbers are ‘one ‘, ’ two’ , ‘three’ , ‘four’ , ‘five’ , ‘six’ , ‘seven’ , ‘eight’ , and ‘nine’.
The two digit numbers starting with 1 are ‘ten’ , ‘eleven’ , ‘twelve’, ‘thirteen’ , ’ fourteen’ , ‘fifteen’ , ‘sixteen’ , ‘seventeen’ , ‘eighteen’ , and ‘nineteen’.
Numbers bigger than 20 need a hyphen ( - ) between their tens and ones digit.
Other than 0 and 10 , the multiples of 10 are’twenty’ , ‘thirty’ , ‘forty’, ‘fifty’ , ’ sixty’ , ‘seventy’ , ‘eighty’ , and ‘ninety’.
Constraints:
1<=number
<=99
eg:
Input | Output |
---|---|
52 | fifty-two |
题目分析
题目要求我们把输入的数字,转化为相对于的英文,不同大小范围的数字,有不同的输出要求,直接上代码。
解题代码
我写的代码:
import sys
import math
# Auto-generated code below aims at helping you parse
# the standard input according to the problem statement.
i=['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight','nine']
j=['ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen','nineteen']
k=['twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty','ninety']
number = int(input())
if number<10:
print(i[number-1])
elif 10<=number<20:
print(j[number-10])
elif number%10==0:
print(k[number//10-2])
else:
print( ("%s-%s")%(k[number//10-2],i[number%10-1]) )
德国老哥写的代码:
n=int(input())
a='_ one two three four five six seven eight nine ten eleven twelve thirz fourz fifz sixz sevenz eighz ninez'.replace('z','teen').split()
print([ a[n%20] , f"{ '_ _ twenty thirty forty fifty sixty seventy eighty ninety'.split()[n//10] }" + f"-{a[n%10]}" * (n%10>0) ] [ n>19 ])
总结
- Python replace() 方法:Python replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。
- Python格式化字符串f-string概览:差不多可以理解为等效于str.format()函数。
- print([1,2][i>0]):用判断的方式可以代替下标0和1,true为1,false为0。
- 外国人的思维真的很好,他用“_”补齐列表,代替了下标0,非常聪明值得学习。