Python - 每行打印x个项目

时间:2017-11-19 17:09:25

标签: python-3.x

Python新手。我已经搜遍了所有的解决方案,而我所要做的就是修复一件事并打破另一件事。

我需要打印1到50之间的奇数列表,每行打印10个数字。每行的数字应该是正确的。

这可能是我得到的最接近的,但是我无法将字符串值对齐到右边。

   def odd() :
       rows = []
       row = '\t'.join(map(str,(i for i in range (1, 50, 2))))
       rows.append('{}'.format(row))
       print('\n'.join(rows))

   odd()

Sample Output

我也尝试过这个选项,但是我无法弄清楚如何获得每行10个,我也无法证明这一点。

def odd():
lower_limit =1
upper_limit = 50


for i in range (lower_limit, upper_limit,2):
    print("{:>5}".format(i), end="")

print()

odd()

Sample Output 2

感谢任何帮助。请尽可能简单地解释,因为我还在学习。谢谢!

2 个答案:

答案 0 :(得分:0)

首先创建所有list numbers right-justified stringsprint,然后def oddTable(width, lim): nums = [str(i).rjust(len(str(lim))+1) for i in range(1, lim, 2)] print('\n'.join(''.join(nums[i:i+width]) for i in range(0, len(nums), width)))

>>> oddTable(10, 50)
  1  3  5  7  9 11 13 15 17 19
 21 23 25 27 29 31 33 35 37 39
 41 43 45 47 49
>>> oddTable(20, 200)
   1   3   5   7   9  11  13  15  17  19  21  23  25  27  29  31  33  35  37  39
  41  43  45  47  49  51  53  55  57  59  61  63  65  67  69  71  73  75  77  79
  81  83  85  87  89  91  93  95  97  99 101 103 105 107 109 111 113 115 117 119
 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159
 161 163 165 167 169 171 173 175 177 179 181 183 185 187 189 191 193 195 197 199

和一些测试:

with open("conf.json") as f:
    data = json.loads(f.read())

driver = get_driver(getattr(Provider,'ECS'))

with open('.cloud_credentials/'+data['provider']+'/access_id', 'r') as myfile:
    ACCESS_KEY_ID = myfile.read().replace('\n', '')
    print ACCESS_KEY_ID

with open('.cloud_credentials/'+data['provider']+'/secret_key', 'r') as myfile:
    SECRET_KEY = myfile.read().replace('\n', '')
    print SECRET_KEY


timer.start()
conn = driver(access_id = ACCESS_KEY_ID,
              secret = SECRET_KEY,
              region = 'us-east-1')
timer.stop()


cluster = conn.create_cluster('pippo','us-east-1')

答案 1 :(得分:0)

按照您的要求构建数字列表,然后根据需要多次遍历列表就是答案。

from math import ceil

def odd_numbers(upper_limit, chunk_size):
        lst = [i for i in range(1, upper_limit, 2)]
        size = len(lst)
        num_lines = ceil(size/chunk_size)
        for i in range(0, num_lines):
                print(" ".join([str(i) for i in lst[i*chunk_size+1 : (i+1)*10]]))

odd_numbers(50, 10)

函数的最后两行(循环)可以重写为列表理解,但IMO很难以这种方式读取。