在一行上输入一个整数
代表待转换的整数。
输出若干个小写的英文单词,代表转换后的结果。
22
twenty two
2000000
two million
ge = {1:'one',2:'two',3:'three',4:'four',5:'five',6:'six',7:'seven',8:'eight',9:'nine'}
shi = {20:'twenty',30:'thirty',40:'forty',50:'fifty',60:'sixty',70:'seventy',80:'eighty',90:'ninety'}
shiji = {10:'ten',11:'eleven',12:'twelve',13:'thirteen',14:'fourteen',15:'fifteen',16:'sixteen',17:'seventeen',18:'eighteen',19:'nineteen'}
def turn(x):
z = x
y = ''
n = 100
while z > 0:
f2 = int(z/n)
z = int(z % n)
f3 = n
n = n / 10
if f2 == 0:
if f3 == 100:
continue
if f3 == 10 and y != '' and x%10 != 0:
y = y + 'and' + ' '
else:
if f3 == 100:
y = y + ge[f2] + ' ' + 'hundred' + ' '
continue
elif f3 == 10:
if y != '':
y = y + 'and' + ' '
if f2 == 1:
y = y + shiji[int(x%100)]
break
else:
if x%10 == 0:
y = y + shi[f2*10]
break
else:
y = y + shi[f2*10] + ' '
elif f3 == 1:
y = y + ge[f2]
return y
num = int(input())
fanyi = ''
million = int(num/1000000)
thousand = int((num%1000000)/1000)
single = num%1000
num1 = [million,thousand,single]
f1 = 4
for i in num1:
f1 -= 1
if i == 0:
continue
else:
if f1 == 3:
fanyi = fanyi + turn(i) + ' ' + 'million' + ' '
elif f1 == 2:
fanyi = fanyi + turn(i) + ' ' +'thousand' + ' '
elif f1 == 1:
fanyi = fanyi + turn(i)
print(fanyi) def num1_to_words(num): ones = ['zero','one','two','three','four','five','six','seven','eight','nine'] return ones[int(num)] def num2_to_words(num): teens = ['','eleven','twelve','thirteen','fourteen','fifteen','sixteen','seventeen','eighteen','nineteen'] tens = ['','','twenty','thirty','forty','fifty','sixty','seventy','eighty','ninety'] if int(num) < 20: if num=='10': return 'ten' else: return teens[int(num[1])] else: if num[-1]=='0': return tens[int(num[0])] else: return tens[int(num[0])]+' '+ num1_to_words(num[1]) def num3_to_words(num): if num == '000': return '' elif num[:2] =='00': return num1_to_words(num[2]) elif num[1:] =='00': return num1_to_words(num[0]) +' hundred' elif num[0] == '0': return num2_to_words(num[1:]) elif num[1] =='0': return num1_to_words(num[0]) +' hundred and '+num1_to_words(num[2]) else: return num1_to_words(num[0]) +' hundred and '+num2_to_words(num[1:]) def num_to_words(num): if len(num)==1: return num1_to_words(num) elif len(num)==2: return num2_to_words(num) else: return num3_to_words(num) num = input() if len(num)<=3: print(num_to_words(num)) elif 3<len(num)<=6: print(num_to_words(num[:-3])+' thousand ' + num_to_words(num[-3:])) else: print(num_to_words(num[:-6])+' million ' +num_to_words(num[-6:-3])+' thousand ' + num_to_words(num[-3:]))
def teens(n): L=['','one','two','three','four','five','six','seven','eight','nine','ten', 'eleven','twelve','thirteen','fourteen','fifteen','sixteen','seventeen', 'eighteen','nineteen'] T=['twenty','thirty','forty','fifty','sixty','seventy','eighty','ninety'] if (n<20): return L[n] elif n%10==0: return T[int(n/10)-2] else: return T[int(n/10)-2]+' '+L[n%10] def hundreds(n): h=int(n/100) yu=n%100 if h>0: if (yu==0): return teens(h)+' hundred' return teens(h)+' hundred and '+teens(n-h*100) else: return teens(n) n=int(input()) string='' b=int(n/1000000) if b>0: string=teens(b)+' million' n=n%1000000 m=int(n/1000) if m>0: if string !='': string=string+' ' string=string+hundreds(m)+' thousand' n=n%1000 if string !='': string=string+' ' string=string+hundreds(n) print(string)
a = input()
dic = {
"1": "one",
"2": "two",
"3": "three",
"4": "four",
"5": "five",
"6": "six",
"7": "seven",
"8": "eight",
"9": "nine",
"10": "ten",
"11": "eleven",
"12": "twelve",
"13": "thirteen",
"14": "fourteen",
"15": "fifteen",
"16": "sixteen",
"17": "seventeen",
"18": "eighteen",
"19": "nineteen",
"20": "twenty",
"30": "thirty",
"40": "forty",
"50": "fifty",
"60": "sixty",
"70": "seventy",
"80": "eighty",
"90": "ninety",
}
def numbertrans(a):
b = []
try:
try:
b.append(dic[a[-2:]])
except:
if not a[-2] == "0":
if not a[-1] == "0":
b.append(dic[a[-1]])
b.append(dic[a[-2] + "0"])
else:
try:
b.append(dic[a[-1]])
except:
pass
if a[-3] and not a[-3] == "0":
if not b == []:
b.append("and")
b.append("hundred")
b.append(dic[a[-3]])
except:
return " ".join(b[::-1])
return " ".join(b[::-1])
num = numbertrans(a[-3:])
if len(a) > 3:
num = numbertrans(a[-6:-3]) + " thousand "+num
if len(a) > 6:
num = numbertrans(a[-9:-6]) + " million " + num
if len(a) > 9:
num = numbertrans(a[-12:-9]) + " billion " + num
print(num)
num = int(input())
hashMap = {
1: "one",
2: "two",
3: "three",
4: "four",
5: "five",
6: "six",
7: "seven",
8: "eight",
9: "nine",
10: "ten",
11: "eleven",
12: "twelve",
13: "thirteen",
14: "fourteen",
15: "fifteen",
16: "sixteen",
17: "seventeen",
18: "eighteen",
19: "nineteen",
20: "twenty",
30: "thirty",
40: "forty",
50: "fifty",
60: "sixty",
70: "seventy",
80: "eighty",
90: "ninety",
100: "one hundred",
200: "two hundred",
300: "three hundred",
400: "four hundred",
500: "five hundred",
600: "six hundred",
700: "seven hundred",
800: "eight hundred",
900: "nine hundred",
}
def getNumberWord(w):
return hashMap[w]
def getThreeWord(t1, t2, t3):
temp = ""
if t1 != 0:
if t2 != 0&nbs***bsp;t3 != 0:
temp = getNumberWord(t1) + " hundred and "
else:
temp = getNumberWord(t1) + " hundred "
if t2 != 0:
if t2 == 1:
temp += getNumberWord(t2*10+t3)
else:
temp += getNumberWord(t2*10) + " "
return temp
if num in hashMap:
print(getNumberWord(num))
exit()
ans = []
while num > 0:
t = num % 10
num = int(num/10)
ans.append(t)
size = len(ans)
res = ""
if size >= 7:
res += getNumberWord(ans[6]) + " million "
res += getThreeWord(ans[5], ans[4], ans[3])
if ans[3] != 0:
res += getNumberWord(ans[3]) + " thousand "
else:
res += "thousand "
res += getThreeWord(ans[2], ans[1], ans[0])
elif size >= 4:
if size >= 6:
res += getThreeWord(ans[5], ans[4], ans[3])
elif size >= 5:
res += getNumberWord(ans[4] * 10) + " "
if ans[3] != 0:
res += getNumberWord(ans[3]) + " thousand "
else:
res += "thousand "
res += getThreeWord(ans[2], ans[1], ans[0])
elif size >= 3:
res += getThreeWord(ans[2], ans[1], ans[0])
else:
res += getNumberWord(ans[1]*10) + " "
if ans[1] != 1 and ans[0] != 0:
res += getNumberWord(ans[0])
print(res)
num = input()
rel = {1:"one",2:"two",3:"three",4:"four",5:"five",
6:"six",7:"seven",8:"eight",9:"nine",10:"ten",
11:"eleven",12:"twelve",13:"thirteen",15:"fifteen",
20:"twenty",30:"thirty",50:"fifty",18:"eighteen",
80:"eighty",14:"forteen",40:"forty"}
for i in range(6,10):
if i == 8: continue
rel[10 + i] = rel[i] + "teen"
rel[10 * i] = rel[i] + "ty"
#print(rel)
unit = ["thousand","million","billion"]
res = []
while len(num) > 0:
temp_res = ""
temp_three = int(num[-3:])
# avoid num like 5000000
if temp_three == 0:
res.append("")
num = num[:-3]
continue
if temp_three <= 20:
temp_res = rel[temp_three]
res.append(temp_res)
else:
# may be it's 100&nbs***bsp;over that
if temp_three % 10 != 0:
temp_res = rel[temp_three % 10]
if temp_three // 10 > 0:
temp_three //= 10
#print(temp_three)
if temp_three % 10 != 0:
middle = " "
if temp_res == "":
middle = ""
temp_res = rel[temp_three % 10 * 10] + middle + temp_res
if temp_three // 10 > 0:
# avoid num like 119
if int(num[-3:]) % 100 <= 19 and int(num[-3:]) % 100 > 0:
temp_res = rel[int(num[-3:]) // 100] + " hundred and " + rel[int(num[-3:]) % 100]
res.append(temp_res)
num = num[:-3]
continue
temp_three //= 10
middle = " hundred and "
# avoid num like 100
if temp_res == "":
middle = " hundred"
temp_res = rel[temp_three] + middle + temp_res
res.append(temp_res)
# move cursor
num = num[:-3]
ans = ""
for i in range(len(res)):
if i + 1 < len(res):
if res[i + 1] == "":
continue
ans = unit[i] + " " + res[i] + " " + ans
else:
ans = res[i] + " " + ans
print(ans) gewei = {'1':'one', '2':'two', '3':'three', '4':'four', '5':'five', \
'6':'six', '7':'seven', '8':'eight', '9':'nine'}
shiwei = {'2':'twenty', '3':'thirty', '4':'forty', '5':'fifty', \
'6':'sixty', '7':'seventy', '8':'eighty', '9':'ninety','0':''}
shiji = {'1':'eleven', '2':'twelve', '3':'thirteen', '4':'fourteen', '5':'fifteen', \
'6':'sixteen', '7':'seventeen', '8':'eighteen', '9':'nineteen','0':'ten'}
mid = ['', ' thousand ',' million ', ' billion ']
def threesum(a):
ans = ''
if len(a) == 1:
ans = gewei[a]
elif len(a) == 2:
if a[0] == '1':
ans = shiji[a[1]]
else:
if a[1] == '0':
ans = shiwei[a[0]]
else:
if a[0] == '0':
ans = gewei[a[1]]
else:
ans = shiwei[a[0]] + ' ' + gewei[a[1]]
elif len(a) == 3:
if a[0] == '0':
ans = threesum(a[1] + a[2])
else:
ans = '{} hundred'.format(gewei[a[0]])
if (a[1] + a[2]) != '00':
ans += ' and '
ans += threesum(a[1] + a[2])
return ans
stri = str(input())
strlist = []
if len(stri) % 3 != 0:
stri = '0'*(3 - len(stri) % 3) + stri
item = ''
count = 0
for i in stri:
item += i
count += 1
if count == 3:
strlist.append(item)
item = ''
count = 0
strlist[0] = str(int(strlist[0]))
ans = ''
for i in range(len(strlist)):
ans += threesum(strlist[i])
ans += mid[len(strlist) - i - 1]
print(ans) units_dict = {"1":"one","2":"two","3":"three","4":"four","5":"five","6":"six","7":"seven","8":"eight","9":"nine"}
tens_dict = {"2":"twenty","3":"thirty","4":"forty","5":"fifty","6":"sixty","7":"seventy","8":"eighty","9":"ninety"}
teens_dict = {"10":"ten","11":"eleven","12":"twelve","13":"thirteen","14":"fourteen","15":"fifteen","16":"sixteen","17":"seventeen","18":"eighteen","19":"nineteen"}
def trave(number):
output = []
length_number = len(number)
if length_number == 3:
if number[0] != "0":
temp = units_dict[number[0]]
output.append(temp)
output.append("hundred")
if number[0]!="0":
if number[1]!="0"&nbs***bsp;number[2]!="0":
output.append("and")
number = number[1:]
length_number -= 1
if length_number == 2:
if number[0] == "0":
number = number[1:]
length_number -= 1
elif number[0] == "1":
temp = teens_dict[number]
output.append(temp)
else:
temp = tens_dict[number[0]]
output.append(temp)
number = number[1:]
length_number -= 1
if length_number == 1:
if number[0] != "0":
temp = units_dict[number[0]]
output.append(temp)
output = " ".join(output)
return output
while True:
try:
'''
number = input()
number = number.split(",")
length = len(number)
output = ""
'''
inputs = int(input())
number = []
output = ""
if inputs < 1000:
number.append(str(inputs))
elif 1000 < inputs < 1000000:
temp = inputs // 1000
number.append(str(temp))
temp = inputs % 1000
number.append(str(temp))
elif inputs >= 1000000:
temp = inputs // 1000000
number.append(str(temp))
inputs = inputs % 1000000
temp = inputs // 1000
number.append(str(temp))
temp = inputs % 1000
number.append(str(temp))
length = len(number)
if length == 3:
temp = number[0]
temp = trave(temp)
output += temp
output += " million "
number = number[1:]
length -= 1
if length == 2:
temp = number[0]
temp = trave(temp)
output += temp
output += " thousand "
number = number[1:]
length -= 1
if length == 1:
temp = number[0]
temp = trave(temp)
output += temp
print(output)
except:
break #没用字典,用的列表,有些边界值额外处理了以下
def spk(number): #每3位数分开处理
list1 = ["","one","two","three","four","five","six","seven","eight","nine","ten"]
list2 = ["","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"]
list3 = ["","","twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"]
if number < 11: #处理 1-10
r = list1[number]
elif 10 < number < 20: #处理 11-19
r = list2[number%10]
elif 19 < number < 100: #处理 20-99
r = list3[number//10] + " " + list1[number%10]
elif number == 100: # 单独处理 100,用字典就没这么麻烦
r = "one hundred"
else: #处理 101-999,方法和上面一样
h = list1[number//100] + " hundred and"
if number%100 < 11:
t = list1[number%100]
elif 10 < number%100 < 20:
t = list2[number%100%10]
elif 19 < number%100 < 100:
t = list3[number%100//10] + " " + list1[number%100%10]
r = h + " " + t #把结果组合起来
return r #返回结果
while True:
try:
strs = input()
if len(strs) < 4: #只有3位的情况
number = int(strs)
res = spk(number)
print(res)
elif 3 < len(strs) < 7: # 有4-6位的情况
number = int(strs)//1000
r1 = spk(number)
number = int(strs)%1000
r2 = spk(number)
res = r1 + " thousand " + r2 #因为前面函数是每3位一组,现在组合结果
res = res.replace(" "," ") #因为用的前面列表,会有双空格的情况,额外处理
print(res)
elif 6 < len(strs) < 8: #7位数的情况
number = int(strs)//1000000
r1 = spk(number)
number = int(strs)%1000000//1000
r2 = spk(number)
number = int(strs)%1000000%1000
r3 = spk(number)
res = r1 + " million " + r2 + " thousand " + r3 #因为前面函数是每3位一组,现在组合结果
res = res.replace(" "," ") #因为用的前面列表,会有双空格的情况,额外处理
print(res)
except:
break #还是觉得很复杂,倒是挺好理解
#个位
dic1={
'0':"",'1':" one",'2':" two",'3':" three",
'4':" four",'5':" five",'6':" six",
'7':" seven",'8':" eight",'9':" nine",
}
#十位为一
dic2={
'10':" ten",'11':" eleven",'12':" twelve",'13':" thirteen",
'14':" fourteen",'15':" fifteen",'16':" sixteen",
'17':" seventeen",'18':" eighteen",'19':" nineteen",
}
#十位不为一
dic3={
'0':"",'2':" twenty",'3':" thirty",
'4':" forty",'5':" fifty",'6':" sixty",
'7':" seventy",'8':" eighty",'9':" ninety",
}
def hud(n):
temp=''
if n[0]=='0':
if n[1]=='1':
temp+=dic2[n[1:]]
else:
temp+=dic3[n[1]]+dic1[n[2]]
else:
temp+=dic1[n[0]]+' hundred'
if n[1]=='0' and n[2]!='0':
temp+=' and'+dic1[n[2]]
elif n[1]=='0' and n[2]=='0':
temp+=''
elif n[1]=='1':
temp+=' and'+dic2[n[1:]]
else:
temp+=' and'+dic3[n[1]]+dic1[n[2]]
return temp
n=input().zfill(9)
temp2=''
unt=[' million',' thousand','']
for i in range(3):
if n[3*i:3*i+3]!='000':
temp2+=hud(n[3*i:3*i+3])+unt[i]
if temp2[0]==' ':
temp2=temp2[1::]
print(temp2) s = ['','one','two','three','four','five','six','seven', 'eight','nine','ten','eleven','twelve','thirteen', 'fourteen','fifteen','sixteen','seventeen','eighteen', 'nineteen','twenty','thirty','forty','fifty','sixty', 'seventy','eighty','ninety' ] def s_1(st): res = s[int(st)] return res def s_2(st): num = int(st) if num < 20: res = s[int(st)] else: n1 = num % 10 n2 = num // 10 if n1 == 0: res = s[n2 + 18] else: res = s[n2 + 18] + ' ' + s_1(str(n1)) return res def s_3(st): if len(st) <= 2: return s_2(st) n3 = int(st[0]) mod = int(st) % 100 if mod == 0: res = s[n3] + ' ' + 'hundred' else: res = s[n3] + ' ' + 'hundred' + ' and ' + s_2(st[1:]) return res def s_4(st): if len(st) <= 3: return s_3(st) n1 = str(int(st[-3:])) n2 = str(int(st[:-3])) res = s_3(n2) + ' thousand ' + s_3(n1) return res def s_5(st): if len(st) <= 6: return s_4(st) n1 = str(int(st[-6:])) n2 = str(int(st[:-6])) res = s_4(n2) + ' million ' + s_4(n1) return res def s_6(st): if len(st) <= 9: return s_5(st) n1 = str(int(st[-9:])) n2 = str(int(st[:-9])) res = s_5(n2) + ' billion ' + s_5(n1) return res while True: try: st = input() print(s_6(st)) except: break
while 1:
try:
num=int(input())
num1={1:'one',2:'two',3:'three',4:'four',5:'five',6:'six',7:'seven',8:'eight',9:'nine',10:'ten',11:'eleven',
12:'twelve',13:'thirteen',14:'fourteen',15:'fifteen',16:'sixteen',17:'seventeen',18:'eighteen',19:'nineteen'}
num2={20:'twenty',30:'thirty',40:'forty',50:'fifty',60:'sixty',70:'seventy',80:'eighty',90:'ninety'}
def num_1(num): #0-20
if num>0:
return num1[num]
else:
return ''
def num_2(num): #20-100
if num%10==0:
return num2[num]
else:
return num2[num-num%10]+' '+num1[num%10]
def num_3(num): #100-1000
a,b=num//100,num%100
if b>19:
return num1[a]+' hundred and '+num_2(b)
elif b>0:
return num1[a]+' hundred and '+num_1(b)
else:
return num1[a]+' hundred'
def num_4(num): #>=1000分段读
if num>=100:
return num_3(num)
elif num>=20:
return num_2(num)
elif num>=1:
return num_1(num)
else:
return ''
a,b,c=num//1000000,(num%1000000)//1000,(num%1000000)%1000
if a>0:
if b==0:
print(num_4(a)+' million '+num_4(c))
else:
print(num_4(a)+' million '+num_4(b)+' thousand '+num_4(c))
elif a==0 and b>0:
print(num_4(b)+' thousand '+num_4(c))
else:
print(num_4(num))
except:
break