Python当中print用法汇总
后台-插件-广告管理-内容页头部广告(手机) |
目录
一.Python语法
二.Python中转义字符
1.\(在行尾时)-续行符
2.\\ -- 反斜杠符号
3.\' -- 单引号
4.\" -- 双引号
5. \a -- 响铃(来点程序员式小快乐)
6.\b -- 退格(Backspace)
7.\n -- 换行
8.\v -- 纵向制表符
9.\t -- 横向制表符
10.\r -- 回车
11.\f -- 换页
12.\0 -- 空字符(NULL)
13. r/R -- 原字符
三.print(%)用法
1.整数
2.浮点数
3.字符串
四.print配合format
五.print打印实例:
1.九九乘法表
2.打印心型:
3.数独游戏
一.Python语法
作为一个函数,从我们最先接触的一次函数y=x他们都进行着输入输出,对应着具体的参数,
拥有着各自的语法规则。
print()函数语法如下:
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
①"objects"(物品) -- 作为print的输出对象,可以一次输出多个对象。当输出多个对象时需要用, 或+分隔。
②sep(Separate分开,隔开) -- 用来间隔多个对象,默认值是一个空格
③file -- 要写入的文件对象(以文件流形式写入文件还是标准输出流映射到打开脚本窗口)
④flush -- 是否刷新缓冲区
简单解释下参数:
默认参数:file=sys.stdout,print函数是对sys.stdout的高级封装,可关注我后续更新或移步大佬python的print与sys.stdout_python sys.stdout-CSDN博客
这里有个大佬对print与sys.stdout的讲解。
sep:换个角度理解就是把逗号代表空格这一默认值给换成'-',转换为自定义的字符串
- print('1','2','3',sep='-')
- '''
- 输出:1-2-3
- '''
end:默认结尾处换行
- print('1','2','3'+'=',sep='+',end='6')
- #运行结果:1+2+3=6
flush:把缓冲区的数据强行输出,清空缓冲区。
约等于手机的运行内存。
在读写流中数据先被读到内存(相当于缓存区),再写入,中途用close()方法关闭读写流,缓存数据会丢失。(只有当发生其他事件,如缓冲区已满或发生换行输出才会刷新)
而flush()则刷新缓冲区,强制把其中数据写入文件,清空缓存区,避免数据丢失。
- f = open(r'1.txt', 'w')
- print('Hello, you in front of the screen.', file=f, flush=True)
- #正常情况下print到f中的内容先存到"运行内存"中,
- #当文件对象关闭时才把内容输出到'1.txt'中,当flush=True时会立即把内容刷新存到'1.txt'
print当中flush默认是False,写成True后每次调用该语句都会将语句放入对应的文件当中(如果用了file)
这个可以理解为:老师留暑假作业,每名同学需要完成的任务是固定一样的,学霸的你将脑子中的flush改为True觉醒了学霸属性,疯狂赶时间写作业,将"写完作业"这一判定条件视为你"玩游戏上分"这一事件的起始,当然同时也是暑假作业的末端判定。而学渣则是在最后一天熬夜肝作业才完成,即临近"暑假结束"这一必要结束条件,你不得不将你的作业完成。
二.Python中转义字符
转义字符 | 描述 |
---|---|
\(处于行尾位置) | 续行符 |
\\ | 反斜杠 |
\' | 单引号 |
\" | 双引号 |
\a | 响铃 |
\b | 退格(Backspace) |
\n | 换行 |
\v | 纵向制表符 |
\t | 横向制表符 |
\r | 回车 |
\f | 换页 |
\0 | 空字符(NULL) |
r/R | 原字符 |
讲解:
1.\(在行尾时)-续行符
在每一行代码的最后添加\(注意反斜杠后不能加空格!),他可以将一行代码分成多行来写,打印结果仍是一行内容,便于代码编写整理,阅读。
- print('<我在第一行>\
- <我在第二行>\
- <在这呐第三行>\
- <我又到第四行了>')
- #运行结果:<我在第一行><我在第二行><在这呐第三行><我又到第四行了>
2.\\ -- 反斜杠符号
由于转义字符的原因在字符串中想打印出\则需要用到反斜杠(\\)
- print('Hello\\World!')
- #运行结果:Hello\World!
3.\' -- 单引号
当你想在字符串中打印 ' 展现你的语文素养发现不太行时,那么用\'在字符串里表示单引号。
- print('My name is \'暮暮不朝\'')
- #运行结果:My name is '暮暮不朝'
4.\" -- 双引号
当你想在字符串中打印 "内涵别人时却发现打印不出来,那么用\"在字符串里表示双引号。
5. \a -- 响铃(来点程序员式小快乐)
此转义字符很少见,在Python的解释器中无法真正响铃,在输出含有\a的字符串时,\a的位置会有标识表示出来。
- print('Hello World!\a')
- # 运行结果:Hello World!
真正实现响铃操作需要win+R键,进入cmd打开控制台:
输入Python进入其编译器模式,然后输入以下代码:
- import time
- while True:
- print('\a')
- time.sleep(1) # 每次响铃的间隔时间为1秒
然后连敲两次回车键,就可以听到每秒一次的系统提示音了,关闭控制台即可退出该程序。
6.\b -- 退格(Backspace)
\b相当于用了一次退格键(Backspace)
- print('Hello World\b')
- #输出结果:Hello Worl
看到这里有人可能就有疑问了,既然\b相当于用了一次退格键Backspace ,为什么还要用这个转义字符呐,直接删掉需要删除的内容不是更方便简单吗。
实际在计算机语言当中, Backspace 并不是删除的指令。组成 Backspace 的两个英文单词 back 和space 分别是回去和空间的意思,组合起来就是”往回走一步“,但与方向左键不同, Backspace 在向左移动光标位置的同时,将后面所有的内容都往前移了一个单位,并替换掉原有内容 。当我们在 Python 中输入字符时,如果输入后立即发现错误,使用 Backspace 键进行修改,这其实是使用退格键将后面的空(NULL)前移了一个单位 ,并替换掉当前位置的内容,给输入者以“删除”的假象。
而我们也可多次用\b相当于连续敲Backspace键,而在最后一个\b后的内容也将替换原有内容,不必破坏源代码。而且还有其他的各种需求。
- print('Hello World\b\b\b\b暮暮不朝')
- #输出结果:Hello 暮暮不朝
7.\n -- 换行
与\相反,\n是将一行输出为多行
- print('<我是第一行>\n<我在第二行>\n<我又跑到第三行了>\n<猜错了我在第四行>')
- #运行结果:<我是第一行>
- # <我在第二行>
- # <我又跑到第三行了>
- # <猜错了我在第四行>
8.\v -- 纵向制表符
使用\v,纵向产生四个空字符,相当于竖着用Tab键。
9.\t -- 横向制表符
- print('班级\t姓名\t语文\t数学\t英语')
- print('一班\t玲羽\t90\t80\t95')
- print('十三班\t德睿\t80\t95\t90')
- '''
- 运行结果:
- 班级 姓名 语文 数学 英语
- 一班 玲羽 90 80 95
- 十三班 德睿 80 95 90
- '''
- print('班级\t姓名\t语文\t数学\t英语')
- print('一班\t玲羽\t90\t80\t95')
- print('十三班\t德睿\t80\t95\t90')
- print('十四班\t上官景儒\t90\t95\t90')
- '''
- 运行结果:
- 班级 姓名 语文 数学 英语
- 一班 玲羽 90 80 95
- 十三班 德睿 80 95 90
- 十四班 上官景儒 90 95 90
- '''
我们可以发现表格错位了此时则可以连用\t来进行补齐
- print('班级\t姓名\t\t语文\t\t数学\t\t英语')
- print('一班\t玲羽\t\t90\t\t80\t\t95')
- print('十三班\t德睿\t\t80\t\t95\t\t90')
- print('十四班\t上官景儒\t90\t\t95\t\t90')
- '''
- 运行结果:
- 班级 姓名 语文 数学 英语
- 一班 玲羽 90 80 95
- 十三班 德睿 80 95 90
- 十四班 上官景儒 90 95 90
10.\r -- 回车
在日常使用 Word 编辑文本时,回车键就是另起一行,从行首开始输入。但在 Python 中,\r 与 \n 的用法却大相径庭。\r (return) 指回到本行行首,\n (new line) 指开启新的一行。因此,要注意在编程语言中的回车与退格,和我们日常工作所理解的用法有很大区别!
其作用是将 \r 后面的内容(包括空格)移到所有字符串开头,并逐一替换开头部分的字符,直至将 \r 后面的内容完全替换完成。没有替换则保持原样
- print('Hello\rWorld!')
- #输出结果:World!
11.\f -- 换页
\f 后的内容实现换页打印,一般在调用文档编辑工具的页面实现此效果,直接打印会显示和上述 NULL类似的字符效果。
12.\0 -- 空字符(NULL)
\0和\000乃至\00都是表示空字符,用以补足字符串长度。
- print(len("Hello World") ) # 11
- print(len("Hello World\0") ) # 12
13. r/R -- 原字符
在存在转义字符的字符串前输入 r / R ,则转义机制失效,打印包括转义字符的所有内容。
- print(r'Hello\\World')
- #输出结果:Hello\\World
- 如果需要调用文件位置,则r"C:\Users\Desktop\1.jpg"或是"C:\\Users\\Desktop\\1.jpg"
如果需要调用文件位置,则r"C:\Users\Desktop\1.jpg"或是"C:\\Users\\Desktop\\1.jpg"
三.print(%)用法
符号 | 说明 |
---|---|
%s | 字符串 |
%d | 十进制(整数) |
%f | 浮点数 |
%% | '%' |
1.整数
%o | oct八进制 |
%d | dec十进制 |
%x | hex十六进制 |
- print('%o' % 32)
- #40
- print('%d' % 32)
- #32
- print('%x' % 32)
- #20
2.浮点数
(注意小数点)
%f ——保留小数点后面六位有效数字
%.3f,保留3位小数位
%e ——保留小数点后面六位有效数字,指数形式输出
%.3e,保留3位小数位,使用科学计数法
%g ——在保证六位有效数字的前提下,使用小数方式,否则使用科学计数法
%.3g,保留3位有效数字,使用小数或科学计数法
- print('%f'%3.14)#默认保留六位小数
- #3.140000
- print('%.1f' % 3.14) # 取一位小数
- #3.1
- print('%e' % 3.14) # 默认六位小数(科学计数法)
- #3.140000e+00
- print('%.3e' % 3.14) # 取三位小数(科学计数法)
- #3.140e+00
- print('%g' % 3.1415926) # 默认六位有效数字
- #3.14159
- print('%.7g' % 3.1415926) # 取七位有效数字
- 3.141593(这里进位了)
- print('%.2g' % 3.1415926) # 取二位有效数字
- 3.1
3.字符串
- print('%s' % 'hello John') # 字符串输出
- #hello John
- print('%20s' % 'hello John') # 右对齐,取20位,不够则补位
- #hello John
- print('%-20s' % 'hello John') # 左对齐,取20位,不够则补位
- #hello John
- print('%.2s' % 'hello John') # 取2位
- #he
- print('%10.2s' % 'hello John') # 右对齐,取2位
- # he
- print('%-10.2s' % 'hello John') # 左对齐,取2位
- #he
四.print配合format
- #顺序输出:
- print('name:{};sex:{};grades:{}'.format('lys','man',100))
- #索引输出:
- print('name:{0};sex:{2};grades:{1}'.format('lys',100,'man'))
- #参数输出:
- print('name:{c};sex:{a};grades:{b}'.format(a='man',b=100,c='lys'))
- #列表输出:
- list=['lys',100,'man']
- print('name:{0[0]};sex:{0[2]};grades:{0[1]}'.format(list))#相当于一个字典里的第一个'小字典'
- #字典输出:
- dict={'name':'lys','sex':'man','grades':100}
- print('name:{name};sex:{sex};grades:{grades}'.format(**dict))
- #类输出:
- class s():
- name='lys'
- grades=100
- sex='man'
- print('name:{S.name};grades:{S.grades};sex:{S.sex}'.format(S=s))
五.print打印实例:
1.九九乘法表
- for i in range(1,10):
- for j in range(1,i+1):
- print('{}x{}={}\t'.format(j,i,i*j),end='')
- print()
- 输出结果:
- 1x1=1
- 1x2=2 2x2=4
- 1x3=3 2x3=6 3x3=9
- 1x4=4 2x4=8 3x4=12 4x4=16
- 1x5=5 2x5=10 3x5=15 4x5=20 5x5=25
- 1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
- 1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
- 1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
- 1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81
2.打印心型:
print('\n'.join([''.join([('Love'[(x-y)%4]if((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3<=0 else' ')for x in range(-30,30)])for y in range(15,-15,-1)]))3.数独游戏
- from random import shuffle, randrange
- def generate():
- # 初始网格
- result = []
- line = list(range(1,10))
- for i in range(9):
- result.append(line)
- line.append(line.pop(0))
- # 注意,这里的切片很重要
- line = line[:]
- # Python允许函数的嵌套定义
- def switchRows(first, second):
- # 这里的括号和换行不是必须的
- # 只是为了方便手机阅读
- (result[first],
- result[second]) =\
- (result[second],
- result[first])
- def switchColumns(first, second):
- for index in range(9):
- (result[index][first],
- result[index][second]) =\
- (result[index][second],
- result[index][first])
- # 随机交换行
- randomRows = list(range(9))
- shuffle(randomRows)
- for i in range(0,7,2):
- switchRows(randomRows[i],\
- randomRows[i+1])
- # 随机交换列
- randomColumns = list(range(9))
- shuffle(randomColumns)
- for i in range(0,7,2):
- switchColumns(randomColumns[i],\
- randomColumns[i+1])
- # 随机清空一些格子
- num = randrange(25, 50)
- positions = {(randrange(9),randrange(9))\
- for i in range(num)}
- for row, col in positions:
- result[row][col] = ' '
- return result
- def output(grids):
- print('+'+'-+'*9)
- for row in range(9):
- line = '|'.join(map(str,grids[row]))
- line = line.join(['|']*2)
- print(line)
- print('+'+'-+'*9)
- grids = generate()
- output(grids)
这个可以自行去优化
各位都看到这里了如果觉得有帮助请点个赞标个点,也可关注支持一下☺,后续会不断更新内容的,欢迎私聊指错☺√。
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。
在线投稿:投稿 站长QQ:1888636
后台-插件-广告管理-内容页尾部广告(手机) |