在一行上输入一个整数
代表待转换的整数。
输出若干个小写的英文单词,代表转换后的结果。
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