List_of_numbers1to19 = ['one', 'two', 'three', 'four', 'five', 'six', 'seven',
'eight', 'nine', 'ten', 'eleven', 'twelve', 'thirteen',
'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen',
'nineteen']
List_of_numbers1to9 = List_of_numbers1to19[0:9]
List_of_numberstens = ['twenty', 'thirty', 'fourty', 'fifty', 'sixty', 'seventy',
'eighty', 'ninety']
for i in List_of_numbers1to19:
print(i)
list_of_numbers21to99 = []
count = 19
tens_count = 0
for j in List_of_numberstens:
for k in List_of_numbers1to9:
if tens_count%10 == 0:
#should print an iteration of List_of_numberstens
tens_count +=1
tens_count +=1
print(j, k)
正如你所看到的,这变得越来越混乱:P很抱歉。
基本上我尝试使用具有不同索引的三个不同的for循环来打印它们。我已经尝试过对列表进行切片并将列表编入索引,但我仍然将数字的输出数乘以10作为List_of_numberstens
的完整列表。
我认为我在这里尝试做的很清楚。
提前感谢您的帮助!
答案 0 :(得分:6)
我知道你已经接受了一个答案,但你特别提到了嵌套循环 - 它没有使用 - 而且你错过了Python迭代的优点,而不需要那样i//10-2
和{ {1}}用于将索引编入列表的东西。
Python的print(j,k)
循环迭代直接在列表中的项目上运行,你可以打印它们,所以我回答:
for
答案 1 :(得分:1)
我认为你过度复杂的20-100案件。从20到100,数字非常规律。 (即它们的格式为<tens_place> <ones_place>
)。
通过仅使用一个循环而不是嵌套循环使代码更容易遵循。现在我们只需要弄清楚十位是什么,以及那些是什么。
通过使用10的整数除法可以很容易地找到十位。(因为列表从20开始减去2)。
通过使用10的模运算符,可以类似地找到那些地方。 (我们减去1,因为列表以1开头而不是0)。
最后,我们通过使用if语句分别处理那些地方为0的情况(并且不打印任何一个地方值)。
List_of_numbers1to19 = ['one', 'two', 'three', 'four', 'five', 'six', 'seven',
'eight', 'nine', 'ten', 'eleven', 'twelve', 'thirteen',
'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen',
'nineteen']
List_of_numberstens = ['twenty', 'thirty', 'fourty', 'fifty', 'sixty', 'seventy',
'eighty', 'ninety']
for i in range(19):
print(List_of_numbers1to19[i])
for i in range(20, 100):
if i%10 == 0: #if multiple of ten only print tens place
print(List_of_numberstens[i//10-2]) #20/10-2 = 0, 30/10-2 = 1, ...
else: #if not, print tens and ones place
print(List_of_numberstens[i//10-2] + ' ' + List_of_numbers1to19[i%10-1])