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

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

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. Python爬虫知识点二

    一.request库 import json import requests from io import BytesIO #显示各种函数相当于api # print(dir(requests)) u ...

  2. [异常解决] 奇巧淫技——VirtualBox中的linux无显示启动,并在win7上远程控制

    楼主是资深技术宅(癖),由于感觉手上的老笔记本太卡,遂狠心买了个性能至强的主机同时配了个投影仪(满足躺着打代码的意淫场景).但是体验了大概一个月发现还是坐着打代码舒服,但是如下图坐着打代码总是要抬头看 ...

  3. jqueryui sortable拖拽后保存位置

    jqueryUI sortable 可以用来进行页面拖拽布局,然而有一个小问题就是拖拽后如何保存状态. 工作中遇到了这个情况,遍把这个问题记了下来,具体思路是: 利用拖拽stop后利用   var a ...

  4. 5大UX设计谬论,如何去补救?

     以下内容由Mockplus团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具. 每个新项目都是从学习开始的. 就像设计师需要了解一个特定的客户和他们的设计目标一样,客户需要了解设 ...

  5. Class对象的创建与使用

    类与Class对象 类是程序的一部分,每个类都有一个Class对象,即每当编写并且编译一个新类的时候就会产生一个Class对象.当程序创建第一个对类的静态成员的引用的时候,会将该类动态加载到JVM中, ...

  6. iOS QQ分享图片无反应问题

    受iOS 9 上 http 限制 需要在info.plist文件添加必要string <key>LSApplicationQueriesSchemes</key> <ar ...

  7. cookie/session(过时的写法)

    cookie存在客户端的浏览器中,不太安全,容易被窃取,,session被存在服务器中(类似于字典中的value,),服务器会给浏览器返回这个value的key值,下次进来直接根据key取value. ...

  8. 新浪新闻页面抓取(JAVA-Jsoup)

    1.使用gradle建立工程: 工程格式如下: include ':spider-demo' rootProject.name = 'my-spider-demo' settings def void ...

  9. bootstrap轮播组件之“如何关闭自动轮播”

    在一个页面里使用多个bootstrap轮播组件的时候,如果还让所有轮播图都自动轮播的话,整个画面都在动,会给用户一种很不好的体验感受.所以,需要关闭轮播图的自动轮播. 关闭方法:去除如下属性即可: d ...

  10. Java集合源码分析(四)HashMap

    一.HashMap简介 1.1.HashMap概述 HashMap是基于哈希表的Map接口实现的,它存储的是内容是键值对<key,value>映射.此类不保证映射的顺序,假定哈希函数将元素 ...