题解 | #学英语# 一个比较笨的办法
学英语
https://www.nowcoder.com/practice/1364723563ab43c99f3d38b5abef83bc
num1 = ['zero','one','two','three','four','five','six','seven','eight','nine','ten','eleven','twelve','thirteen','fourteen','fifteen','sixteen','seventeen','eighteen','nineteen']
num2 = [0,0,'twenty','thirty','forty','fifty','sixty','seventy','eighty','ninety']
word = []
# 两位数转英文
def n99(n):
if n >= 0:
if n < 20:
word.append(num1[n])
else:
word.append(num2[n//10])
if n%10 != 0:
word.append(num1[n%10])
return word
# 三位数内转英文
def hun(n):
if n >= 100:#这个必须加,不然后续纯在余数是1 23 这种丢过来,会算出0 hundre
#先判断百位,并附加单位
word.append(num1[n//100])
word.append('hundred')
if n % 100 != 0:
word.append('and')
#剩余两位数应用两位数的判断
n99(n%100)
elif n < 20:
word.append(num1[n])
else:
word.append(num2[n // 10])
if n % 10 != 0:
word.append(num1[n % 10])
return word
#剩余数字转为上述函数内,例如千,可以转
def tha(n):
if len(str(n)) == 7:
word.append(num1[n//1000000])
word.append('million')
n = n % 1000000
hun(n//1000)
word.append('thousand')
if n % 1000 != 0:
hun(n%1000)
elif len(str(n)) == 6:
hun(n//1000)
word.append('thousand')
if n % 1000 != 0:
hun(n%1000)
elif len(str(n)) == 5:
n99(n//1000)
word.append('thousand')
if n % 1000 != 0:
hun(n%1000)
else:
word.append(num1[n//1000])
word.append('thousand')
if n % 1000 != 0:
hun(n % 1000)
return word
num = int(input())
if num < 100:
n99(num)
elif 100 <= num < 1000:
hun(num)
else:
tha(num)
print(' '.join(word))
#悬赏#