前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >优雅的99乘法表以及format使用

优雅的99乘法表以及format使用

作者头像
小闫同学啊
发布2019-07-18 15:37:49
8380
发布2019-07-18 15:37:49
举报
文章被收录于专栏:小闫笔记小闫笔记

正文共: 3135 字 5 图 预计阅读时间: 8 分钟

每日分享

You are never too old to set another goal or to dream a new dream.

你永远不会老到不能设定另一个目标或拥有一个新的梦想。

小闫语录

也许你想学习英语,但是转念一想,自己都这么大了,再学也学不会了,算了。也许你想考个学历,但是转念一想,都工作这么多年了,太晚了,算了。也许你想考个职业证书,但是一想,每天这么忙,算了。然后你的生活就这样,算了。其实做一件事最佳的时间就是现在!不要受什么乱七八糟的毒鸡汤的影响,你要相信,你下定决心开始的那一刻,永远不晚。不要自我设限,你的潜力超乎你的想象,大器晚成的例子比比皆是,不要得过且过,哪怕是咸鱼,也要做一条有理想的咸鱼。

优雅的99乘法表以及format使用

:本文使用的python版本为3.6.4。

首先我们来一个普通版的99乘法表:

代码语言:javascript
复制
for i in range(1,10):
    for j in range(1,i+1):
        print('%d x %d = %2d' % (j,i,i*j),end='  ')
    print()

其中只有一点注意的地方, %2d是占位符。代表位数为两位的数字,如果只有一位数,那么占两位,向右对齐。

将其输出,呈现下面的效果:

代码语言:javascript
复制
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

再来个进阶版的99乘法表:

代码语言:javascript
复制
print('\n'.join('\t'.join(['{} x {} = {}'.format(j,i,i*j) for j in range(1,i+1)]) for i in range(1,10)))

只有一行代码,简洁了很多。这全是列表推导式的功劳:

代码语言:javascript
复制
[表达式 for 变量 in 列表]
或者
[表达式 for 变量 in 列表 if 条件]

难以理解吗?那么我们将进阶版的99乘法表还原成普通版:

代码语言:javascript
复制
for i in range(1,10):
    for j in range(1,i+1):
        print('{} x {} = {}\t'.format(j,i,i*j),end='')
    print()

同样,我们对其输出一下,两个输出结果相同,我们只贴一个效果即可:

代码语言:javascript
复制
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

进阶版里面不光涉及到了列表推导式,还有几个零散的知识点,我们来学习一下:

format

用做字符串的格式化,比之前的占位符 %这一类要灵活的多。

特点

1.不需要像占位符 %d、 %s、 %f等等区分数据类型,直接使用 {}即可。

2.单个参数可以多次输出,参数顺序也可以不同。

3.官方推荐,必属精品。

使用

1.普通使用版,类比之前的 %使用方式:

代码语言:javascript
复制
a = '{} - {}'.format('小闫笔记','超赞')
print(a)

输出结果为:

代码语言:javascript
复制
小闫笔记 - 超赞

2.指定位置,重复使用,不需要按顺序:

代码语言:javascript
复制
a = '姓名:{0}\n年龄:{2}岁\n姓名:{1}\n年龄:{2}岁'.format('小闫同学1','小闫同学2',18)
print(a)

\n是换行符,代表后面的语句换到下一行输出。

输出结果为:

代码语言:javascript
复制
姓名:小闫同学1
年龄:18岁
姓名:小闫同学2
年龄:18岁

可以看到18被重复使用了两次。

3.当你看到了可以使用下标取值,你一定会想可不可以使用关键字取值?当然可以!

代码语言:javascript
复制
a = '姓名:{name}\n年龄:{age}岁\n'.format(**{'name':'小闫同学','age':18})
print(a)

其中 **代表的是解包。

输出结果:

代码语言:javascript
复制
姓名:小闫同学
年龄:18岁

4.你看字典都能用了,那么列表呢?还可以!

代码语言:javascript
复制
a = '姓名:{0[0]}\n年龄:{0[1]}岁\n'.format(['小闫同学',18])
print(a)

输出结果:

代码语言:javascript
复制
姓名:小闫同学
年龄:18岁

也许你会有疑问:为什么取值的时候,取了两次,像 0[0],而不是 [0]直接取?那就是我们的format里面可以放多个列表。

代码语言:javascript
复制
a = '姓名:{1[0]}\n年龄:{1[1]}岁\n'.format(['小闫同学',18],['猪猪同学',18])
print(a)

输出结果为:

代码语言:javascript
复制
姓名:猪猪同学
年龄:18岁

5.你也许会问,那么 format可以像 %2d一样对数字位数做要求吗?当然可以。

代码语言:javascript
复制
print('{:2d}'.format(1))
print('11')

输出结果为:

代码语言:javascript
复制
1 # format
11 # 两位数输出

可以看出,确实进行了右对齐,占了两位。

6.数字格式化的格式就是: {}里面先写一个冒号,再写格式:

代码语言:javascript
复制
保留小数点后两位:{:.2f}
带符号保留小数点后两位:{:+.2f}
不带小数(四舍五入):{:.0f}
数字补零 (填充左边, 宽度为2):{:0>2d}
数字补x (填充右边, 宽度为4):{:x<4d}
以逗号分隔的数字格式:{:,}
百分比格式:{:.2%}
指数记法:{:.2e}
右对齐 (默认, 宽度为10):{:10d}
左对齐 (宽度为10):{:<10d}
中间对齐 (宽度为10):{:^10d}

^, <, > 分别是居中、左对齐、右对齐,后面带宽度, : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。 +表示在正数前显示 +,负数前显示 -; (空格)表示在正数前加空格

7.还有最最高级的用法,进制转换

代码语言:javascript
复制
'{:b}'.format(11) 1011 二进制
'{:d}'.format(11) 11 十进制
'{:o}'.format(11) 13 八进制
'{:x}'.format(11) b 十六进制
'{:#x}'.format(11) 0xb 十六进制
'{:#X}'.format(11) 0XB 十六进制

b、d、o、x 分别是二进制、十进制、八进制、十六进制。

\t

\t代表的是tab键,也就是4个空格。我们可以来验证一下:

代码语言:javascript
复制
print('\t1')
print('11111')

输出结果为:

代码语言:javascript
复制
1
11111

我们可以看到一个 \t占了4个位。

结尾有话说

希望大家可以学习一种思想,就是 对比实验法,就像上面每次需要验证的地方我会进行类比,输出两个结果,进行比较从而得出结论。很简单,但是很有效。

因为我之前的专业是高分子材料与工程,化工材料类的专业,后来又在校有科研方面的经历,需要每天进行大量的实验。所以之前的一些思想根深蒂固。行业不同,思想相同。希望对大家有所帮助吧。

优质文章推荐:

公众号使用指南

redis操作命令总结

前端中那些让你头疼的英文单词

Flask框架重点知识总结回顾

项目重点知识点详解

难点理解&面试题问答

flask框架中的一些常见问题

团队开发注意事项

浅谈密码加密

Django框架中的英文单词

Django中数据库的相关操作

DRF框架中的英文单词

重点内容回顾-DRF

Django相关知识点回顾

美多商城项目导航帖

项目重要技术点介绍

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 全栈技术精选 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 每日分享
  • 优雅的99乘法表以及format使用
    • format
      • 特点
      • 使用
    • \t
      • 结尾有话说
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档