目录

一.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的高级封装

这里有个大佬对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 print 指定字符高亮显示 python中print%d_python

输入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)]))

python print 指定字符高亮显示 python中print%d_反斜杠_02

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)

python print 指定字符高亮显示 python中print%d_转义字符_03

这个可以自行去优化