因此,我在学校里使用Python 3进行了编程课程。任务基本上是编写一个程序,要求输入1-9之间的两个整数。结果将是一个乘法表,其中包含第一个整数的行数和第二个整数的列数。因此,如果输入5和6,他们将得到:
我在此处找到了生成该程序的代码。现在。我试图剖析它并理解它。但我在某些方面陷入困境。
所以这是代码:
row,col=5,6
i=0
while i <= row :
j=0
while j <= col:
if i+j==0 : print('{:4s}'.format(''),end='') #corner
elif i*j==0 : print('{:4d}'.format(i+j),end='') # border
else : print('{:4d}'.format(i*j),end='') # table
j=j+1
print()
i=i+1
好的。因此,我的小脑子不明白的是如何生成左侧垂直边界。如果满足第一个条件,将在左上角生成一个空格,并将+1添加到变量j。此后,将满足条件二,条件二将依次给出水平边界,该条件将一直持续到j大于col为止。但是,如果j> col,如何生成左边界?代码的哪一部分生成垂直边框?
也。花括号中的输入在.format运算符之前是什么意思?例如,{:4s}
与{4:d}
有何不同?它们只是距离,“ s”代表字符串,d代表数字吗?
此外,最后一条语句print()
的作用是什么?
答案 0 :(得分:2)
该程序的输出为:
1 2 3 4 5 6
1 1 2 3 4 5 6
2 2 4 6 8 10 12
3 3 6 9 12 15 18
4 4 8 12 16 20 24
5 5 10 15 20 25 30
让我们看看每个if / elif / else步骤:
if i+j==0 : print('{:4s}'.format(''),end='') #corner
由于i和j始终为非负数,因此i+j==0
的情况仅在i和j均为0时才会发生。在这种情况下,我们打印一个空白字符串,填充为4个字符长-这将创建左上角的空角,即网格中的0,0。另请注意,end=''
确保打印不会自动转到下一行(这是默认行为)。请注意,行循环底部的print()
调用会将您带到下一行。
elif i*j==0 : print('{:4d}'.format(i+j),end='') # border
如果i和j都不为0(这就是我们使用elif的原因),则获得这种情况的唯一方法是当其中一个为0时。在这种情况下,i+j
等于非零i和j之间的值。我们将在每一行的开头打印字符i,并在每一列的顶部打印相应的非零字符j。另请参见,每个数字的格式设置为4个字符宽(带有4d)。
else : print('{:4d}'.format(i*j),end='') # table
如果i和j都不为零,我们将讨论其他情况。我们只需在表中的每个位置打印i和j的乘积。
您可以查看format specification mini language以获得全部详细信息,但是在这种情况下,s
代表字符串,d
代表数字,数字(如4d)需要输出有4个字符。花括号指定我们将传递给format方法的每个值的位置(如果您有多个值,则可以有多对花括号)。