在Python 3中打印1-100中的数字作为单词

时间:2016-09-13 03:49:07

标签: python python-3.x numbers

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的完整列表。

我认为我在这里尝试做的很清楚。

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:6)

我知道你已经接受了一个答案,但你特别提到了嵌套循环 - 它没有使用 - 而且你错过了Python迭代的优点,而不需要那样i//10-2和{ {1}}用于将索引编入列表的东西。

Python的print(j,k)循环迭代直接在列表中的项目上运行,你可以打印它们,所以我回答:

for

Try it online at repl.it

答案 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])