题解 | #学英语#
学英语
https://www.nowcoder.com/practice/1364723563ab43c99f3d38b5abef83bc
n = int(input()) new = "" k, m, b = False, False, False if n < 1000000 and n >= 1000: k = True if n < 1000000000 and n >= 1000000: m = True if n >= 1000000000: b = True vocab = { "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", } vocab2 = { "2": "twenty", "3": "thirty", "4": "forty", "5": "fifty", "6": "sixty", "7": "seventy", "8": "eighty", "9": "ninety", } def kd(n, new): n = str(n) if n == "000": return new if len(n) == 3: new = "".join([new, vocab[n[0]]]) a = int(n) % 100 if a == 0: new = " ".join([new, "hundred "]) return new new = " ".join([new, "hundred and "]) if a >= 20: a = str(a) new = "".join([new, vocab2[a[0]]]) if a[1] == '0': return new new = " ".join([new, vocab[a[1]]]) elif a < 20: a = str(a) new = "".join([new, vocab[a]]) elif len(n) < 3: if n == "00": return new if int(n) >= 20: new = "".join([new, vocab2[n[0]]]) if n[1] == '0': return new new = " ".join([new, vocab[n[1]]]) elif int(n) < 20: new = "".join([new, vocab[n]]) return new def md(n, new): n = str(n) if n == "000": return new if len(n) == 3: new = "".join([new, vocab[n[0]]]) a = int(n) % 100 if a == 0: new = " ".join([new, "hundred "]) return "".join([new, ' thousand ']) new = " ".join([new, "hundred and "]) if a >= 20: a = str(a) new = "".join([new, vocab2[a[0]]]) if a[1] == '0': return "".join([new, ' thousand ']) new = " ".join([new, vocab[a[1]]]) elif a < 20: a = str(a) new = "".join([new, vocab[a]]) elif len(n) < 3: if n == "00": return "".join([new, ' thousand ']) if int(n) >= 20: new = "".join([new, vocab2[n[0]]]) if n[1] == '0': return "".join([new, ' thousand ']) new = " ".join([new, vocab[n[1]]]) elif int(n) < 20: new = "".join([new, vocab[n]]) return "".join([new, ' thousand ']) def bd(n, new): n = str(n) if n == "000": return new if len(n) == 3: new = "".join([new, vocab[n[0]]]) a = int(n) % 100 if a == 0: new = " ".join([new, "hundred "]) return "".join([new, ' million ']) new = " ".join([new, "hundred and "]) if a >= 20: a = str(a) new = "".join([new, vocab2[a[0]]]) if a[1] == '0': return "".join([new, ' million ']) new = " ".join([new, vocab[a[1]]]) elif a < 20: a = str(a) new = "".join([new, vocab[a]]) elif len(n) < 3: if n == "00": return "".join([new, ' million ']) if int(n) >= 20: new = "".join([new, vocab2[n[0]]]) if n[1] == '0': return "".join([new, ' million ']) new = " ".join([new, vocab[n[1]]]) elif int(n) < 20: new = "".join([new, vocab[n]]) return "".join([new, ' million ']) def bu(n, new): n = str(n) if n == "000": return new if len(n) == 3: new = "".join([new, vocab[n[0]]]) a = int(n) % 100 if a == 0: new = " ".join([new, "hundred "]) return "".join([new, ' billion ']) new = " ".join([new, "hundred and "]) if a >= 20: a = str(a) new = "".join([new, vocab2[a[0]]]) if a[1] == '0': return "".join([new, ' billion ']) new = " ".join([new, vocab[a[1]]]) elif a < 20: a = str(a) new = "".join([new, vocab[a]]) elif len(n) < 3: if n == "00": return "".join([new, ' billion ']) if int(n) >= 20: new = "".join([new, vocab2[n[0]]]) if n[1] == '0': return "".join([new, ' billion ']) new = " ".join([new, vocab[n[1]]]) elif int(n) < 20: new = "".join([new, vocab[n]]) return "".join([new, ' billion ']) if n < 1000: print(kd(n, new)) elif n < 1000000 and n >= 1000: n = str(n) lenth = len(n) new = md(int(n[:lenth-3]), new) print(kd(int(n[lenth-3:]), new).strip()) elif n < 1000000000 and n >= 1000000: n = str(n) lenth = len(n) new = bd(int(n[:lenth-6]), new) new = md(int(n[lenth-6:lenth-3]), new) print(kd(int(n[lenth-3:]), new).strip()) elif n >= 1000000000: n = str(n) lenth = len(n) new = bu(int(n[:lenth-9]), new) new = bd(int(n[lenth-9:lenth-6]), new) new = md(int(n[lenth-6:lenth-3]), new) print(kd(int(n[lenth-3:]), new).strip())