请向我解释此代码。这是一个将整数输入打印为字母输出的程序。如果我输入35,则输出将为35。我了解其中的大部分内容,但想知道数十如何从
中获取价值twenty thirty forty fifty sixty seventy eighty ninety
代码是:
num = int(input("Enter the number:"))
numbers = ("zero one two three four five six seven eight nine".split())
numbers.extend("ten eleven twelve thirteen fourteen fifteen sixteen".split())
numbers.extend("seventeen eighteen nineteen".split())
numbers.extend(tens if ones == "zero" else (tens + " " + ones)
for tens in "twenty thirty forty fifty sixty seventy eighty ninety".split()
for ones in numbers[0:10])
print(numbers[num])
答案 0 :(得分:3)
在最后一行看到的两个主要概念是list comprehension和nested loops。看看。
为了更好地了解发生了什么,我们将在较简单的部分中拆分该行:
TENS
for tens in "twenty thirty forty fifty sixty seventy eighty ninety".split():
print(tens)
输出:二十三四十五六十七八百八十九十
上一个for
循环在列表理解中与此相对应:
(tens for tens in "twenty thirty forty fifty sixty seventy eighty ninety".split())
不带print
的返回生成器。如果要查看结果:
print(list(tens for tens in "twenty thirty forty fifty sixty seventy eighty ninety".split()))
一个
numbers = ("zero one two three four five six seven eight nine".split())
for ones in numbers[0:10]:
print(ones)
输出:零一二三四有五六七七八九
上一个for
循环在列表理解中与此相对应:
(ones for ones in numbers[0:10])
合并循环
我们可以合并它们:
for tens in "twenty thirty forty fifty sixty seventy eighty ninety".split():
for ones in numbers[0:10]:
print(tens + " " + ones)
OUTPUT: twenty zero
twenty one
twenty two
twenty three
twenty four
twenty five
twenty six
twenty seven
twenty eight
twenty nine
thirty zero
thirty one
thirty two
[...]
由于我们不太喜欢twenty zero
,因此我们将添加一个子句:
for tens in "twenty thirty forty fifty sixty seventy eighty ninety".split():
for ones in numbers[0:10]:
if ones == "zero":
print(tens)
else:
print(tens + " " + ones)
OUTPUT:
twenty
twenty one
twenty two
twenty three
twenty four
[...]
这与列表理解是相同的行为:
(tens if ones == "zero" else (tens + " " + ones) for tens in "twenty thirty forty fifty sixty seventy eighty ninety".split() for ones in numbers[0:10])
返回列表(* generator),该列表将扩展到您的numbers
列表。
最后,您输入的数字对应于列表中单词的索引