前面我们在第四章的时候挖了个坑:怎么用优雅的方式来打印九九乘法表。这一章我们就来填上这个坑。

首先,我们再来看下九九乘法表是什么样子的

1 x 1 = 1
1 x 2 = 2 2 x 2 = 4
1 x 3 = 3 2 x 3 = 6 3 x 3 = 9
1 x 4 = 4 2 x 4 = 8 3 x 4 =12 4 x 4 =16
1 x 5 = 5 2 x 5 =10 3 x 5 =15 4 x 5 =20 5 x 5 =25
1 x 6 = 6 2 x 6 =12 3 x 6 =18 4 x 6 =24 5 x 6 =30 6 x 6 =36
1 x 7 = 7 2 x 7 =14 3 x 7 =21 4 x 7 =28 5 x 7 =35 6 x 7 =42 7 x 7 =49
1 x 8 = 8 2 x 8 =16 3 x 8 =24 4 x 8 =32 5 x 8 =40 6 x 8 =48 7 x 8 =56 8 x 8 =64
1 x 9 = 9 2 x 9 =18 3 x 9 =27 4 x 9 =36 5 x 9 =45 6 x 9 =54 7 x 9 =63 8 x 9 =72 9 x 9 =81

不难发现,有以下规律:

  • 一共9行,最多9列
  • 每一行,有和行数相等的列数
  • 从上到下,分别是第1~9行;从左到右,分别是第1~9列
  • 每一行,单元格里的内容是行号 乘以 列号,这是一个循环

我们先来输出,9行9列的每一个单元格

for row in range(1, 10):
for column in range(1, 10):
if column == 9:
print('第', row, '行第', column, '列 ')
else:
print('第', row, '行第', column, '列 ', end='')

以上代码,输出:

第 1 行第 1 列   第 1 行第 2 列   第 1 行第 3 列   第 1 行第 4 列   第 1 行第 5 列   第 1 行第 6 列   第 1 行第 7 列   第 1 行第 8 列   第 1 行第 9 列   
第 2 行第 1 列   第 2 行第 2 列   第 2 行第 3 列   第 2 行第 4 列   第 2 行第 5 列   第 2 行第 6 列   第 2 行第 7 列   第 2 行第 8 列   第 2 行第 9 列   
第 3 行第 1 列   第 3 行第 2 列   第 3 行第 3 列   第 3 行第 4 列   第 3 行第 5 列   第 3 行第 6 列   第 3 行第 7 列   第 3 行第 8 列   第 3 行第 9 列   
第 4 行第 1 列   第 4 行第 2 列   第 4 行第 3 列   第 4 行第 4 列   第 4 行第 5 列   第 4 行第 6 列   第 4 行第 7 列   第 4 行第 8 列   第 4 行第 9 列   
第 5 行第 1 列   第 5 行第 2 列   第 5 行第 3 列   第 5 行第 4 列   第 5 行第 5 列   第 5 行第 6 列   第 5 行第 7 列   第 5 行第 8 列   第 5 行第 9 列   
第 6 行第 1 列   第 6 行第 2 列   第 6 行第 3 列   第 6 行第 4 列   第 6 行第 5 列   第 6 行第 6 列   第 6 行第 7 列   第 6 行第 8 列   第 6 行第 9 列   
第 7 行第 1 列   第 7 行第 2 列   第 7 行第 3 列   第 7 行第 4 列   第 7 行第 5 列   第 7 行第 6 列   第 7 行第 7 列   第 7 行第 8 列   第 7 行第 9 列   
第 8 行第 1 列   第 8 行第 2 列   第 8 行第 3 列   第 8 行第 4 列   第 8 行第 5 列   第 8 行第 6 列   第 8 行第 7 列   第 8 行第 8 列   第 8 行第 9 列   
第 9 行第 1 列   第 9 行第 2 列   第 9 行第 3 列   第 9 行第 4 列   第 9 行第 5 列   第 9 行第 6 列   第 9 行第 7 列   第 9 行第 8 列   第 9 行第 9 列   

实际上,这并没有达到我们想要的效果,因为九九乘法表是第一行只有一列,往下是每行增加一列,我们修改程序:

for row in range(1, 10):
maxColumn = row + 1
for column in range(1, maxColumn):
if column == row:
print('第', row, '行第', column, '列 ')
else:
print('第', row, '行第', column, '列 ', end='')

以上代码,输出:

第 1 行第 1 列
第 2 行第 1 列 第 2 行第 2 列
第 3 行第 1 列 第 3 行第 2 列 第 3 行第 3 列
第 4 行第 1 列 第 4 行第 2 列 第 4 行第 3 列 第 4 行第 4 列
第 5 行第 1 列 第 5 行第 2 列 第 5 行第 3 列 第 5 行第 4 列 第 5 行第 5 列
第 6 行第 1 列 第 6 行第 2 列 第 6 行第 3 列 第 6 行第 4 列 第 6 行第 5 列 第 6 行第 6 列
第 7 行第 1 列 第 7 行第 2 列 第 7 行第 3 列 第 7 行第 4 列 第 7 行第 5 列 第 7 行第 6 列 第 7 行第 7 列
第 8 行第 1 列 第 8 行第 2 列 第 8 行第 3 列 第 8 行第 4 列 第 8 行第 5 列 第 8 行第 6 列 第 8 行第 7 列 第 8 行第 8 列
第 9 行第 1 列 第 9 行第 2 列 第 9 行第 3 列 第 9 行第 4 列 第 9 行第 5 列 第 9 行第 6 列 第 9 行第 7 列 第 9 行第 8 列 第 9 行第 9 列

到了这里,我们发现已经形式了,我们只要把每个单元格上的计算填充上去就OK啦

for row in range(1, 10):
maxColumn = row + 1
for column in range(1, maxColumn):
if column == row:
print(column, 'x', row, '=', column * row, ' ')
else:
print(column, 'x', row, '=', column * row, ' ', end='')

以上代码,输出:

1 x 1 = 1
1 x 2 = 2 2 x 2 = 4
1 x 3 = 3 2 x 3 = 6 3 x 3 = 9
1 x 4 = 4 2 x 4 = 8 3 x 4 = 12 4 x 4 = 16
1 x 5 = 5 2 x 5 = 10 3 x 5 = 15 4 x 5 = 20 5 x 5 = 25
1 x 6 = 6 2 x 6 = 12 3 x 6 = 18 4 x 6 = 24 5 x 6 = 30 6 x 6 = 36
1 x 7 = 7 2 x 7 = 14 3 x 7 = 21 4 x 7 = 28 5 x 7 = 35 6 x 7 = 42 7 x 7 = 49
1 x 8 = 8 2 x 8 = 16 3 x 8 = 24 4 x 8 = 32 5 x 8 = 40 6 x 8 = 48 7 x 8 = 56 8 x 8 = 64
1 x 9 = 9 2 x 9 = 18 3 x 9 = 27 4 x 9 = 36 5 x 9 = 45 6 x 9 = 54 7 x 9 = 63 8 x 9 = 72 9 x 9 = 81

至此,大功告成。

思考1:如果程序里只允许你出现一次print(),程序要怎么写?下面给出答案,但请尽量在自己写出来之前不要查看

for row in range(1, 10):
maxColumn = row + 1
for column in range(1, maxColumn):
endString = ' ' # 结束符 if column == row:
endString = '\n' # 以换行结束 print(column, 'x', row, '=', column * row, ' ', end=endString)

思考2:可以看出来,上面的程序输出来的九九乘法表,有些列,上下是没有对齐的,怎么对齐?下面给出答案,但请尽量在自己写出来之前不要查看

for row in range(1, 10):
maxColumn = row + 1
for column in range(1, maxColumn):
endString = ' ' # 结束符
splitString = ' ' # 积和等号之间的分隔符,默认是空格
num = column * row # 乘积 if num > 9:
splitString = '' if column == row:
endString = '\n' # 以换行结束 print(column, 'x', row, '=', splitString, num, ' ', end=endString)

思考3:如何把乘法表倒着输出?下面给出答案,但请尽量在自己写出来之前不要查看

rowsCount = 9  # 最大行

while rowsCount > 0:

    maxColumn = rowsCount + 1
for column in range(1, maxColumn):
endString = ' ' # 结束符
splitString = ' ' # 积和等号之间的分隔符,默认是空格
num = column * rowsCount # 乘积 if num > 9:
splitString = '' if column == rowsCount:
endString = '\n' # 以换行结束 print(column, 'x', rowsCount, '=', splitString, num, ' ', end=endString) rowsCount -= 1

python3 第八章 - 完善九九乘法表的更多相关文章

  1. python编写九九乘法表代码

    打印九九乘法表 代码: #!/usr/bin/env python # -*- coding: UTF-8 -*- # 项目二: # 1.要求:编写九九乘法表 # 2.分析: # 根据九九乘法表的样式 ...

  2. python3: 简单4步骤输出九九乘法表

    如何输出一个九九乘法表,使用python语言,嵌套循环,4行代码就可以实现,瞬间感觉python真的很简单~ 代码: for i in range(1,10): for j in range(1,i+ ...

  3. python3下最简单的九九乘法表

    def minus(): print("=========================九九乘法表===========================") x=1 y=1 wh ...

  4. python3 九九乘法表打印花式操作(然并卵)

    # 九九乘法表# 方法一# for i in range(1, 10):# for j in range(1, i+1):# print('{}x{}={}\t'.format(i, j, i*j), ...

  5. python3 打印九九乘法表

    打印九九乘法表 # !/usr/bin/env python # -*- coding:utf-8 -*- # Author:Hiuhung Wan for i in range(1, 10): fo ...

  6. python打印九九乘法表

    每种编程语言都可能会遇到编写“九九乘法表”的问题,用Python来处理也是很简单的,具体代码如下(基于Python3)): i = 1 while i <= 9: j = 1 while j & ...

  7. 使用VS2017进行Python代码的编写并打印出九九乘法表

    我们来盘一盘怎么使用VS2017进行python代码的编写并打印出九九乘法表. 使用Visual Studio 2017进行Python编程不需要太复杂的工作,只需要vs2017安装好对Python的 ...

  8. python_九九乘法表

    # 九九乘法表 print(" 九九乘法表") for table_x in range(1,10): for table_y in range(1,table_x +1): pr ...

  9. 【转】Python实现不同格式打印九九乘法表

    前言:最近在学习Python,学习资源有慕课网上的视频教程.菜鸟教程以及Python官方文档tutorial.虽然了解了Python的基本语法,但是还没有真正意义上输出自己写的代码.代码小白,之前仅学 ...

随机推荐

  1. php require、require_once和include、include_once的区别

    一.引入php文件路径的方法require '文件路径'; require ('文件路径');require_once '文件路径'; require_once ('文件路径');include 同 ...

  2. Java学习笔记14---this作为返回值时返回的是什么

    有时会遇到this作为返回值的情况,那么此时返回的到底是什么呢? 返回的是调用this所处方法的那个对象的引用,读起来有点绕口哈,有没有想起小学语文分析句子成份的试题,哈哈. 一点点分析的话,主干是& ...

  3. InnoDB锁

    共享锁和排它锁 InnoDB实现了标准的行级锁,包括两种类型:共享锁(S)和排它锁(X) 一个共享锁(S)允许事务持有这种锁来读取一行 一个排它锁(X)允许事务持有这种锁来修改或删除一行 如果事务T1 ...

  4. 简单认识python cmd模块

    0X00 前言 在早前用别人的工具时,发现有些大佬会用到交互式shell,那时候就挺好奇的,但是一直都没有看一下怎么做到的. 今天在翻p牛的博客的时候,看到他早之前写的一个工具就有用到交互式shell ...

  5. SQLAlchemy基础操作一

    用前安装 pip3 install sqlalchemy ORM ORM就是运用面向对象的知识,将数据库中的每个表对应一个类,将数据库表中的记录对应一个类的对象.将复杂的sql语句转换成类和对象的操作 ...

  6. IdentityServer(15)- 第三方快速入门和示例

    这些示例不由IdentityServer团队维护. IdentityServer团队提供链接到了社区示例,但不能对示例做任何保证. 如有问题,请直接与作者联系. 各种ASP.NET Core安全示例 ...

  7. 【批处理学习笔记】第十四课:常用DOS命令(4)

    系统管理at 安排在特定日期和时间运行命令和程序shutdown立即或定时关机或重启taskkill结束进程(WinXPHome版中无该命令)tasklist显示进程列表(Windows XP Hom ...

  8. Free Pascal初次体验(有亮点哦)

    感觉上Pascal语言写的非常有条理,和英语很像,应该是比较容易学,但是写起来真的是麻烦的要死,平时一行代码用C/C++可能就是几秒钟,用Pascal就要几分钟,Free Pascal感觉也不是很好用 ...

  9. 2017 Multi-University Training Contest - Team 1 1011&&HDU 6043 KazaQ's Socks【规律题,数学,水】

    KazaQ's Socks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

  10. [51nod1407]与与与与

    有n个整数,问从他们中取出若干个数字相与之后结果是0的有多少组. 答案比较大,输出对于 1,000,000,007 (1e9+7)取模后的结果. Input 第一行输入一个整数n.(1<=n&l ...