我想在python中编写一个以图形方式表示数字因子的程序。我不知道如何用文字解释我的意思,所以我将描述我正在寻找的输出:
* - - - - - - - - - - - - - - - - - - -
* * - - - - - - - - - - - - - - - - - -
* - * - - - - - - - - - - - - - - - - -
* * - * - - - - - - - - - - - - - - - -
* - - - * - - - - - - - - - - - - - - -
* * * - - * - - - - - - - - - - - - - -
* - - - - - * - - - - - - - - - - - - -
* * - * - - - * - - - - - - - - - - - -
* - * - - - - - * - - - - - - - - - - -
* * - - * - - - - * - - - - - - - - - -
* - - - - - - - - - * - - - - - - - - -
* * * * - * - - - - - * - - - - - - - -
* - - - - - - - - - - - * - - - - - - -
* * - - - - * - - - - - - * - - - - - -
* - * - * - - - - - - - - - * - - - - -
* * - * - - - * - - - - - - - * - - - -
* - - - - - - - - - - - - - - - * - - -
* * * - - * - - * - - - - - - - - * - -
* - - - - - - - - - - - - - - - - - * -
* * - * * - - - - * - - - - - - - - - *
我写了这个程序:
for i in range (1,21):
for j in range (1,21):
if i%j == 0:
print '*',
else:
print '_',
但输出是单行的,我不知道如何解决这个问题。我玩弄逗号,但我仍然没有得到我想要的东西。
顺便说一下,几乎所有的问题都与格式化输出有关。我怎样才能改进呢?书籍或教程中没有章节专门用于格式化输出,因此我不知道如何改进。
答案 0 :(得分:2)
只需在第一个print
循环中添加for
语句:
for i in range (1,21):
for j in range (1,21):
if i%j == 0:
print '*',
else:
print '-',
print
[OUTPUT]
* - - - - - - - - - - - - - - - - - - -
* * - - - - - - - - - - - - - - - - - -
* - * - - - - - - - - - - - - - - - - -
* * - * - - - - - - - - - - - - - - - -
* - - - * - - - - - - - - - - - - - - -
* * * - - * - - - - - - - - - - - - - -
* - - - - - * - - - - - - - - - - - - -
* * - * - - - * - - - - - - - - - - - -
* - * - - - - - * - - - - - - - - - - -
* * - - * - - - - * - - - - - - - - - -
* - - - - - - - - - * - - - - - - - - -
* * * * - * - - - - - * - - - - - - - -
* - - - - - - - - - - - * - - - - - - -
* * - - - - * - - - - - - * - - - - - -
* - * - * - - - - - - - - - * - - - - -
* * - * - - - * - - - - - - - * - - - -
* - - - - - - - - - - - - - - - * - - -
* * * - - * - - * - - - - - - - - * - -
* - - - - - - - - - - - - - - - - - * -
* * - * * - - - - * - - - - - - - - - *
<强> 强>
b = [' '.join('*' if i==j or i%j==0 else '-' for j in range(1,21)) for i in range(1,21)]
for i in b:
print i
[SAME OUTPUT]
您可以在一行中执行以下操作:
print '\n'.join(' '.join('*' if i % j == 0 else '_' for j in xrange(1,21)) for i in xrange(1,21))
答案 1 :(得分:0)
在你的第一个for循环的每次迭代之后只包含一个print语句...或者换句话说,我的意思是你必须每次打印一个换行符,i在你的情况下递增,在python中你可以打印一个使用以下语法换行:
print
或
print "\n"