print( )

  • 1, 在print( )函数中,不能使用字符串+数字,如要要用+数字,则数字需要加引号(单/双引号);
  • 2, 默认打印:会自动换到下一行,因为默认后面跟有end=’ \n’);
  1. print(objects, sep, end, file, flush) 方法:
  2. # objects -> 表示多个输出的对象;
  3. # sep -> 表示多个输出对象直接的分隔符,默认为1个空格;
  4. # end -> 表示输出对象结束符,默认为换行符;
  5. # file -> 表示数据流输出到的文件;参数flush表示数据流输出至文件时是否缓冲,默认为False(不缓冲);
  1. # 默认打印结果出来后会换行,因为默认后面跟有end=' \n', 打印的模式如下:
  2. print(123, end='\n')
  3. # 如果打印后不需要换行 (既在一行中显示结果,则用逗号间隔,但是需要分多行写入)
  4. print('gznoc.com', end=',')
  5. print(123, end=',')
  6. print(False, end='\n')
  7. # 将多行写在一个print语句里面(注:可以用逗号将字符串和数值链接起来,逗号是一个空格)
  8. print("gznoc.com", 123, False)
  9. # 在字符串或是多个变量中间插入某些分隔符 (使用sep)
  10. str01 = "my"
  11. str02 = 'english name'
  12. print("Terence is", str01, str02, sep='#', end="\n\n")
  13. # 输出到文件
  14. str03 = '本次消费金额为:133元'
  15. file_name = open("/root/test.txt", 'w')
  16. print(str03, file=file_name) # 将str03的内容写入到file_name的目录文件中

print( ) 输出带颜色的字体

1,基础部分(done) - 图1

常见的开头格式如下:
1,基础部分(done) - 图2
格式:
\033 [显示方式;前景色;背景色m 需要显示的文字 \033[0m

  • \033[ —-> 属于开头部分;
  • \033[0m —-> 属于结尾部分;对于结尾部分,其实也可以省略,但是为了书写规范,建议\033[开头 * \033[0m结尾;
  • 显示方式;前景色;背景色m —->这三个参数可只写其中的一个;三个参数表示不同的含义,唯一,三个参数没有先后顺序,没有固定要求,建议按照默认格式规范书写;
    1. print('\033[0m这是显示方式0')
    2. print('\033[1m这是显示方式1')
    3. print('\033[4m这是显示方式4')
    4. print('\033[5m这是显示方式5')
    5. print('\033[7m这是显示方式7')
    6. print('\033[8m这是显示方式8')
    7. print('\033[30m这是前景色0')
    8. print('\033[31m这是前景色1')
    9. print('\033[32m这是前景色2')
    10. print('\033[33m这是前景色3')
    11. print('\033[34m这是前景色4')
    12. print('\033[35m这是前景色5')
    13. print('\033[36m这是前景色6')
    14. print('\033[37m这是前景色7')
    15. print('\033[40m这是背景色0')
    16. print('\033[41m这是背景色1')
    17. print('\033[42m这是背景色2')
    18. print('\033[43m这是背景色3')
    19. print('\033[44m这是背景色4')
    20. print('\033[45m这是背景色5')
    21. print('\033[46m这是背景色6')
    22. print('\033[47m这是背景色7')
    23. print('\033[1;35;0m字体变色,但无背景色 \033[0m') # 有高亮 或者
    24. print('\033[1;35m字体有色,但无背景色 \033[0m')
    25. print('\033[1;45m 字体不变色,有背景色 \033[0m') # 有高亮
    26. print('\033[1;35;46m 字体有色,且有背景色 \033[0m') # 有高亮
    27. print('\033[0;35;46m 字体有色,且有背景色 \033[0m') # 无高亮
    ```python info = input(“Please Introduce yourself: “)

print(‘\033[1;33mWe asked him to introduce himself first, He said \”%s.\”\033[3;31m’ %info) print(‘这行是上一行结尾的颜色输出效果 ‘)

  1. <a name="55b7bfcb"></a>
  2. ### 占位符(百分比%和format)
  3. **百分比%**
  4. | **符号** | **说明** |
  5. | --- | --- |
  6. | %c | 表示字符 |
  7. | %s | 字符串的占位符 |
  8. | %d | 十进制整数的占位符 |
  9. | %f | 浮点数的占位符 |
  10. | %x | 将数字使用十六进制输出(小写字母) |
  11. | %nd | 打印时,显示n位,如果不够,在前面使用空格补齐 |
  12. | %.nf | 保留数点后n位 |
  13. | %X | 十六进制整数输出(大写字母) |
  14. | %% | 输出一个%号 |
  15. | %i | 有符号的十进制整数的占位符 |
  16. | %u | 无符号十进制整数 |
  17. | %o | 八进制整数 |
  18. | %e | 索引符号(小写的e) |
  19. | %E | 索引符号(大写的E) |
  20. | %g | %f和%e的简写 |
  21. | %G | %f和%E的简写 |
  22. **format( )**<br />format( )函数是把字符串当做一个模板,通过传入参数后进行格式化,并且使用大括号{ }来进行占位
  23. | **语法** | **介绍** |
  24. | --- | --- |
  25. | format(args,kwargs) | 对字符串进行格式化的函数; |
  26. | | 参数args:表示可以输入多个参数(argument),参数间以逗号分隔; |
  27. | | 参数kwargs:表示可以输入多个关键词参数,关键字函数的写法例如:age='18',age为关键字,'18'为这个关键字对应的值`` |
  28. ```python
  29. id = input('请输入您的身份证号:')
  30. print('您的出生日期为:%s' %id[6:14])
  31. print('您的出生日期为:%s年%s月%s日' %(id[6:10], id[10:12], id[12:14]))
  32. # %s:是一个格式符,其中“s”表示字符串,也就是说,%s表示这个格式符所在的位置内容必须用字符串替代;
  33. # 接下来的“%”表示需要进行格式化的操作,也就是说,要把这个符号后方的内容替换掉前面的“%s”,最终来形成我们想要的字符串内容;

字符串的格式化输出

  1. a = 'abcdefg'
  2. b = 123
  3. print('%s' %a) # %s:标准输出
  4. print('%-10s' %a) # %10s:左对齐,占位符10位
  5. print('%10s' %a) # %10s:右对齐,占位符10位
  6. print('%.3s' %a) # %.2s:截取3位字符
  7. print('%10.4s' %a) # %10.2s:10位占位符,截取左边4位字符
  8. print('%10.3s' %a[-3:]) # 10位占位符,截取右边3位字符
  9. print('%s的前三位对应数字为:%d' %(a,b)) # 符串不能和数字直接相加,使用%s(占据一个字符串位)和%d(占据一个整数位)先占据一个位置,然后将变量调用进来

整数格式化输出

  1. a = 100
  2. print('二进制为:',bin(a)) # 使用二进制输出:bin(),需要用逗号隔开
  3. print('八进制为:%o' %a) # 八进制输出使用:%o,不需要用逗号隔开
  4. print('十进制为:%d' %a) # 十进制输出使用:%d,不需要用逗号隔开
  5. print('十六进制为:%x' %a) # 十六进制输出使用:%x,不需要用逗号隔开
  6. print('八进制输出为:%o十进制为:%d' %(a,a)) # 多参数打印一行
  7. print('八进制输出为:%o\n十进制为:%d\n' %(a,a)) # 多参数分两行打印

浮点数格式化输出

  1. a=3.1415926
  2. print('四舍五入后保留三位小数:',round(a,3)) # 保留小数位:round(),注意,如果要保留的小数位不够,不会补0(这是与%.3f使用的区别)
  3. print('保留小数点后面6位小数:%f' %a) # 保留小数点后面六位有效数字:%f
  4. print('保留小数点后面3位小数:%.3f' %a) # 保留3位小数位(小数位不够会补0):%.3f
  5. print('保留小数点后面6位小数,以指数形式输出:%e' %a) # 保留小数点后面六位有效数字,以指数形式输出:%e
  6. print('保留小数点后面3位小数,以科学计数法输出:%.3e' %a) # 保留3位小数位,以科学计数法:%.3e
  7. # 保证六位有效数字的前提下,使用小数方式输出,否则使用科学计数法输出:%g
  8. print('%g' %a)
  9. print('%g' %(111112.123456))
  10. print('%g' %(0.123456789))
  11. # 保证六位有效数字的前提下,使用小数方式输出,否则使用科学计数法输出:%g
  12. print('%.3g' %a)
  13. print('%.3g' %(111112.123456))
  14. print('%.3g' %(0.123456789))

格式化输出

  1. print('{} {}'.format('hello','workld')) # 不带字段输出
  2. print('{0}{1}'.format('a','123')) # 带数字编号【format中的内容下标是以0开始的】
  3. print('{0}{1}{0}'.format('a','1')) # 打乱顺序
  4. print('{1}{1}{0}'.format('a','1')) # 打乱顺序
  5. print('{a}{b}{b}'.format(a='2',b='c')) # 变量名输入
  1. # 情况1,列表顺序不能乱,需要一 一对应
  2. d = ['张三',18,'上海',180]
  3. m = '大家好,我是{},我今年{}岁了,我来自{},身高{}cm'.format(*d) # 单*
  4. print(m)
  5. # 情况2,字典可以打乱顺序,因为是按变量一 一对应的
  6. info ={'name':'李四','age':23,'addr':'北京','height':190}
  7. n = '大家好,我是{name},我今年{age}岁了,我来自{addr},身高{height}cm'.format(**info) # 双*
  8. print(n)
  1. #通过关键字来标识每个变量,显示更清楚: {a} {name} {age},通过数字编号来表示每个变量,这个序号必须从0开始: {0} {1}
  2. age = 23
  3. gender = '男'
  4. name = 'Terence'
  5. print("姓名:{0} 性别:{1} 年龄:{2}\n学生姓名:{0}".format(name, gender, age))
  6. print("姓名:{name} 性别:{gender} 年龄:{age}\n学生姓名: {name}".format(name=name,gender=gender,age=age))
  7. print("姓名:{}\n性别:{}\n年龄:{}".format(name, gender, age))
  1. id=input('请输入您的身份证号:')
  2. print('您的出生日期为:{}年{}月{}日'.format(id[6:10],id[10:12],id[12:14]))
  3. print('您的出生日期为:{1}年{0}月{2}日'.format(id[10:12],id[6:10],id[12:14]))
  4. print('您的出生日期为:{year}年{month}月{day}日'.format(month=id[10:12],year=id[6:10],day=id[12:14]))
  5. # 我们分别来理解一下上述3条print语句:
  6. # 第1条:在字符串中我们嵌入了3对“{ }”,并且在format函数的参数中写入了3个参数,程序按照参数从左至右的顺序将字符串进行了格式化;
  7. # 第2条:在字符串中我们仍然嵌入了3对“{ }”,但是每一对“{ }”中都有一个数字,这些数字是从0开始递增的序号,“{0}”表示在该位置要显示从左至右第1个参数的内容,
  8. # “{1}”表示在该位置要显示从左至右第2个参数的内容,以此类推,所以在输入参数的时候,参数的顺序要与前面的序号相对应。
  9. # 第3条:在字符串中我们也是嵌入了3对“{ }”,这一次每一对“{ }”中都有一个关键字,这些关键字与参数中的关键字相对应,例如,“{month}”表示在该位置要显示关键字参数中“month”后方的值,以此类推;

格式化对齐

符号 说明
< (默认)左对齐
> 右对齐
^ 居中对齐
{:4s} 取位数
{:.2f} 取位数
  1. print('{} and {}'.format('hello','world')) # 默认左对齐
  2. print('{:10s} and {:>10s}'.format('hello','world')) # 取10位左对齐,取10位右对齐
  3. print('{:^10s} and {:^10s}'.format('hello','world')) # 取10位居中对齐
  4. print('{} is {:.2f}'.format(1.123, 2.234)) # 取2位小数
  5. print('{0} is {0:>10.2f}'.format(1.123)) # 取2位小数,取10位后右对齐
  6. print('--------------------------------------------------------')
  7. name = 'Terence'
  8. print('姓名:{:10}'.format(name)) # 默认左对齐
  9. print('姓名:{:<10}'.format(name)) # 左对齐
  10. print('姓名:{:>10}'.format(name)) # 右对齐
  11. print('姓名:{:^10}'.format(name)) # 中间对其
  12. print('--------------------------------------------------------')
  13. print('小数:{:10.2f}'.format(3.1415926)) # 保留2位有效数字,在10个字符空间中打印,默认右对齐
  14. print('小数:{:>10.2f}'.format(3.1415926)) # 保留2位有效数字,在10个字符空间中打印,右对齐
  15. print('小数:{:<10.2f}'.format(3.1415926)) # 保留2位有效数字,在10个字符空间中打印,左对齐
  16. print('小数:{:^10.2f}'.format(3.1415926)) # 保留2位有效数字,在10个字符空间中打印,中间对其

input( )

用键盘向电脑提供指令,然后通过电脑把问题显示在显示器上,等人回答的过程,就是通过input( )函数实现的
1,基础部分(done) - 图3
input( )函数就是输入函数,当你在函数的括号内写出问题时,input()函数会将此问题原样显示在屏幕上,并在终端区域等待你针对此问题的回答;
可是,我们为什么要在终端处输入回答呢?不输入行不行?
我们可以把input( )函数看作一扇链接现实世界与代码世界的门,当问题从代码世界传递给我们,可我们却没有回答时,这扇等待输入的input( )大门,就会一直处于敞开状态,一直等着你往里送回答,而当我们输入信息后,这扇input( )大门便会关上,继续执行下面的命令.
1,基础部分(done) - 图4

input( ) 将结果赋值给变量

input函数的结果是什么?
这里所说的函数结果指的就是我们手动输入到屏幕上的东西.

赋值是如何体现?
name = input(‘内容’),在这个语句中,我们在屏幕上输入的东西被赋值给了name(输入的内容可以是数字、文字);
通俗来讲,我们放进name这个盒子里的东西,不是input()函数中提的问题,而是我们通过input()函数收集到的别人的答案;
也就是说把input( )函数的结果,赋值给了一个变量,如果没有赋值的话,整个程序就在你输入后就结束了,不会将你输入的内容反馈给你.
1,基础部分(done) - 图5

1,基础部分(done) - 图6

input( ) 的数据类型

Python3.x中,input( )函数接受一个输入的数据, 注意:使用input输入和输出的数据一律为字符串类型, 哪怕输入的是数字;
对于input( ), 它希望能够读取一个合法的python表达式, 即输入字符串的时候必须使用引号将它括起来, 否则它会引发一个 SyntaxError;
使用input( ), 通过在提示的末尾(这里是冒号后面)包含一个空格, 可将提示与用户输入分开, 让用户清楚地知道其输入始于何处;
1,基础部分(done) - 图7

1,基础部分(done) - 图8

对于input()函数来说,不管我们输入的回答是什么,不管输入的是整数1234,还是字符串我爱摩卡,input()函数的输入值(搜集到的回答),永远会被强制性地转换为字符串类型(固定规则);
跟“你大爷还是你大爷,你大妈已经不是你大妈”一个道理:我爱摩卡即使被强制转换,它还是字符串类型的我爱摩卡;但是我们输入的整数1234就会被强制地转换为字符串的’1234’;
所以,不管我们在终端区域输入什么,input()函数的输入值一定是字符串; 就这样,由于我们用赋值运算符=把input()函数的字符串结果,赋给了变量choice,所以这个变量也一定是字符串类型;
1,基础部分(done) - 图9

input( ) 的数据类型转换

1,基础部分(done) - 图10

1,基础部分(done) - 图11

我们什么时候会用到,input()函数结果的强制转换呢?当想要的答案是数字时,比如年龄,需要输入的信息是时间,或者工资等数字时:
1,基础部分(done) - 图121,基础部分(done) - 图13

input( ) 总结

1,基础部分(done) - 图14

input( ) 案例

  1. # 输入姓名,性别,并打印(带标准格式化输出)
  2. name = input('请输入姓名:')
  3. gender = int(input('请输入年龄:'))
  4. print('姓名:%s, 年龄:%d' %(name,gender))
  1. # 输入两个数,求两个数之和 (带标准格式化输出)
  2. a = int(input('请输入第一个数:'))
  3. b = int(input('请输入第二个数:'))
  4. print('两数之和为:%d' %(a+b))
  1. # 下面演示一种创建多行字符串的方式
  2. # 第1行, 将消息的前半部分存储在变量a1中;
  3. # 第2行, 通过运算符+=将存储在a1中的字符串末尾附加一个组字符串;
  4. a1 = 'Tell me your name? '
  5. a1 += 'What your name?'
  6. name1 = input(a1)
  7. print('\nHello,%s' %(name1))

变量

  • 程序可以操作的存储空间的名字,程序运行期间可以更改数据,每个变量都有特定的数据类型,使用变量前一定要先对变量赋值(即便是空也行);
  • 定义变量名,变量名 = 初始值(这个初始值的目的就是为了告诉变量名当前使用的是什么数据类型);
  • 定义变量目的是为了存储数据,变量 = 数据值,变量在使用之前必须定义,否则会报错;
  • 在给变量起名字的时候,相当于在内存中划出了一块空间,变量名 = 内存空间地址;

命名规则(标识符)

  • 见名知意;
  • 只能由字母,数字,下划线组成,不能以数字开头,如:可命名为 message_1 ,但不能将其命名为 1_message;
  • 区分大小写,如:a和A是两个不同命名;
  • 遵循驼峰原则(首单词正常,从第二个单词开始首字母大写,如:sunckGoodMan);
  • 慎用小写字母l和大写字母O, 因为它们可能被人错看成数字1和0;
  • 不能包含有空格,如:变量名greeting_message可行,但变量名greeting message会引发错误;
  • 不能是python的关键字,如:

1,基础部分(done) - 图15

定义变量

  1. # 注意:定义了一个变量,如果这个变量使用过(比如打印过一次),那么就算一次完整的周期,所以必须等相同的变量打印过一次之后才能再次使用这个变量名
  2. # 1,定义一个变量
  3. num01 = 11111
  4. print(num01)
  5. # 2,定义多个变量,单独定义(方法1)
  6. num01 = 100
  7. num02 = 200
  8. num03 = 300
  9. print('方法1结果为:' + str(num01)+','+str(num02)+','+str(num03))
  10. # 3,定义多个变量,写在一行,使用分号隔开(方法2)
  11. num01 = 100; num02 = 200; num03 = 300
  12. print('方法2结果为:' + str(num01)+','+str(num02)+','+str(num03))
  13. # 4,定义多个变量,使用交互式赋值(方法3)
  14. num01, num02, num03 = 100, 200, 300
  15. print('方法3结果为:' + str(num01)+','+str(num02)+','+str(num03))
  16. # 5,定义多个变量(赋值传递,将300赋值给num03,然后num03赋值给02.....不推荐使用)
  17. num01 = num02 = num03 = 300
  18. print('方法4结果为:' + str(num01)+','+str(num02)+','+str(num03))

变量是如何存储数据

  1. num01 = 100
  2. # 如何获取num01变量的内存地址?
  3. print(id(num01)) # 输出变量num01存储的内存十进制数值!
  4. num02 = num01
  5. print(id(num02)) # 结果和num01的内存地址一样

不推荐的变量定义方法

  1. # 不推荐的命名1:使用单个字母来命令,图简单,没有特殊意义,容易混淆
  2. a = 100
  3. b = 200
  4. c = 300
  5. # 不推荐命令2:使用拼音
  6. xsxm = 'abby'
  7. nianling = 26
  8. shengao = 178
  9. # 下面的程序会报错
  10. num01 += 100 # 等价于num01 = num01 + 100
  11. print(num01)
  12. # 修正(正确)
  13. num01 = 10
  14. num01 += 100 # 在运用变量时,若涉及到要调用变量本身,一定要提前将变量说明清楚
  15. print(num01)

删除变量

  1. del 变量名

数据类型

1,基础部分(done) - 图16

整型(没有小数点的数字)

  1. # 整型,最终都会转化成十进制
  2. num01 = 1000 # 十进制
  3. num02 = 0x1F # 十六进制,逢16进1 1*16 + 15 =32
  4. num03 = 0o31 # 八进制,3*8 +1 =25
  5. print(num01)
  6. print(num02)
  7. print(num03)
  8. print(bin(100)) # 打印二进制
  1. import math # 通过import将math引入进来
  2. # 常见的数学运算
  3. print(abs(-100)) #求绝对值
  4. print(math.fabs(-100)) #求绝对值,带小数点(math属于外部模块)
  5. print(math.sqrt(100)) #求平方根,10的平方是100
  6. print(math.pow(3, 4)) #求3的4次方
  7. print('-------------------------------------')
  8. print(max(10, 100, -34, 398, 91)) #返回最大值
  9. print(min(10, 100, -34, 398, 91)) #返回最小值

备注:整数只能单独“行动”,一旦碰上其他文字类数据,譬如中文、英文,整数这个脆皮刺客,立马被报错秒杀,比如像这样:

  1. print(6小灵童)
  2. print(6abc)

浮点数(带小数点的数字)

  1. # 小数只能有17位有效数字,如果能用17位有效数字表示,那么就用小数点表示,如果17位无法表示,就使用科学记数法
  2. print(3.1415926)
  3. print(1111111111.111)
  4. print(11111111111111111.111)
  5. print(0.000000000000000001)
  6. print(333333333333333333333333333.231313131)
  7. # round() ----函数
  8. print(round(3.1415926)) #取整数
  9. print(round(3.1415926, 3)) #保留3位小数,并四舍五入
  10. # ceil() ----返回该小数的上入整数(正数,就+1,负数,取当前整数部分,所以是-11)
  11. # floor() ----返回该小数的下舍整数(正数,取当前整数部分,负数,去当前整数部分+1)
  12. print(math.ceil(11.111111)) #结果:12
  13. print(math.ceil(-11.111111)) #结果:-11
  14. print(math.floor(11.111111)) #结果:11
  15. print(math.floor(-11.111111)) #结果:-12

布尔类型

  1. # 布尔类型:它就是数值类型,可以直接做数学运算(Flase=0,True=1)
  2. print(False + 100)
  3. print(True + 100)
  4. print(True * 2)

总结

  1. #数据类型
  2. num01 = 100
  3. num02 = - 93.7
  4. num03 = (100 > 200)
  5. num04 = 'Abby'
  6. # 使用type直接输出数据类型
  7. num1 = 100
  8. num2 = -28.888
  9. num3 = (100 > 200)
  10. num4 = "Abby"
  11. print("num1的数据类型为:", type(num1))
  12. print("num2的数据类型为:", type(num2))
  13. print("num3的数据类型为:", type(num3))
  14. print("num4的数据类型为:", type(num4))

数据类型转换

表达式 解释
str(x) 将x转换成字符串
int(x) 将x转换成整数
float(x) 将x转换成浮点数
chr(x) 将整数x转换成字符
ord(x) 将一个字符转换成它的整数值
hex(x) 将一个整数转换成一个十六进制字符串
oct(x) 将一个整数转换成一个八进制字符串

1,基础部分(done) - 图17

示例

  1. # 转换1
  2. a = int('100') + 20
  3. print('a 结果为:-------->',a,'-------->',type(a))
  4. # 转换2
  5. # float()函数可以将【整数】和【字符串】转换成浮点类型,但同时,如果括号里面的数据是【字符串类型】,那这个数据一定得是【数字形式】
  6. b1 = float('1.123') + 1.100
  7. b2 = float('100')
  8. print('b1 结果为:-------->',b1,'-------->',type(b1))
  9. print('b2 结果为:-------->',b2,'-------->',type(b2))
  10. # 转换3
  11. c = str(123) + '456'
  12. print('c 结果为:-------->',c,'-------->',type(c))
  13. # 转换4
  14. d = bool(-1)
  15. print('d 结果为:-------->',e,'-------->',type(d))
  16. # 转换5
  17. e = bool(0)
  18. print('e 结果为:-------->',e,'-------->',type(e))
  19. # 转换6
  20. # int()函数的本质是将数据转换成整数,所以对于浮点数,int()会做取整处理,但是,同我们平时对小数四舍五入的处理方式不同,int()函数会直接抹零,直接输出整数部分。
  21. f = int(3.1415926)
  22. print('f 结果为:-------->',f,'-------->',type(f))

错误的示例

  1. g = int('3.8')
  2. print(g)

运算符

算术运算符

算数运算符 —-> “+”号,用于数据运算,也可以用于连接字符串,任何数据类型 + 字符串,都等于字符串

算术运算符 描述 假设:变量a = 10,变量b = 21
+ 加法运算,将运算符两边的操作数增加 a + b = 31
- 减法运算,将运算符左边的操作数减去右边的操作数 a – b = -11
* 乘法运算,将运算符两边的操作数相乘 a * b = 210
/ 除法运算,用右操作数除左操作数 b / a = 2.1
% 模运算,用右操作数除数左操作数并返回余数 b % a = 1
** 对运算符进行指数(幂)计算 a ** b 表示10的21次幂
// 地板除 - 操作数的除法,其结果是删除小数点后的商数 9//2 = 4; 9.0//2.0 = 4.0;
若其中一个操作数为负数,则结果将被保留,即从零(向负无穷大)舍去 -11//3 = -4; -11.0//3 = -4.0

赋值运算符

简单的最常用的=运算符,他的优先级别低于其他的运算符,所以对该运算符往往最后读取.

赋值运算符 描述 变量a = 10,变量b = 20
= 将右侧操作数的值分配给左侧操作数 c = a + b //表示将a + b的值分配给c
+= 将右操作数相加到左操作数,并将结果分配给左操作数 c + = a 等价于 c = c + a
-= 从左操作数中减去右操作数,并将结果分配给左操作数 c -= a 等价于 c = c - a
*= 将右操作数与左操作数相乘,并将结果分配给左操作数 c = a 等价于 c = c a
/= 将左操作数除以右操作数,并将结果分配给左操作数 c /= a 等价于 c = c / a
%= 将左操作数除以右操作数的模数,并将结果分配给左操作数 c %= a 等价于 c = c % a
**= 执行指数(幂)计算,并将值分配给左操作数 c= a 等价于 c = c a
//= 运算符执行地板除运算,并将值分配给左操作数 c //= a 等价于 c = c // a

比较(关系)运算符

对两个变量或者值进行比较的运算符,比较的结果是布尔值,即True/False.

比较(关系)运算符 比较它们两边的值,并确定它们之间的关系,它们也称为关系运算符 变量a = 10,变量b = 20
== 如果两个操作数的值相等,则条件才为真 (a == b) 结果为:False
!= 如果两个操作数的值不相等,则条件才为真 (a != b) 结果为:True
> 如果左操作数的值大于右操作数的值,则条件才为真 (a > b) 结果为:False
< 如果左操作数的值小于右操作数的值,则条件才为真 (a < b) 结果为:True
>= 如果左操作数的值大于或等于右操作数的值,则条件才为真 (a >= b) 结果为:False
<= 如果左操作数的值小于或等于右操作数的值,则条件才为真 (a <= b) 结果为:Frue
  1. # 这里还有一个语法:意思为:将a值与2的比较结果,赋给b,b得到的是一个布尔值。
  2. a= 1
  3. b = a == 2
  4. b

逻辑运算符

逻辑运算符 使用逻辑操作符可以将任意表达式连接在一起,并得到一个布尔值 变量a = True,变量b = False
and 如果两个操作数都为真,则条件成立【全为真则为真,一个为假则为假】 (a and b) 结果为:False
or 如果两个操作数中的任何一个非零,则条件成为真【全为假则为假,一个为真则为真】 (a or b) 结果为:True
not 用于反转操作数的逻辑状态【非真则假,非假则真】 not(a and b) 结果为:True

成员运算符

成员运算符 用于测试给定的值是否为某个序列中的成员,例如字符串,列表或元组,有两个成员运算符 示例
in 如果在指定的序列中找到一个变量的值,则返回True,否则返回False -
not in 如果在指定序列中没有找到变量的值,则返回True,否则返回False -

身份运算符

身份运算符 用于比较两个对象的内存位置 示例
is 如果检测两个变量是否为同一个变量,相同,则返回True,否则返回False -
is not 如果检测两个变量是否为不同的变量,不相同,则返回True,否则返回False -

按位运算符

按位运算符 按位运算符是执行逐位运算 变量a = 60,变量b = 13,现在以二进制格式
a = 0011 1100
b = 0000 1101
& 如果它存在于两个操作数中,则操作符复制位到结果中 (a & b) 结果为:0000 1100
竖线 如果它存在于任一操作数,则复制位 (a 竖线 b) = 61 结果为:0011 1101
^ 二进制异或,如果它是一个操作数集合,但不是同时是两个操作数则将复制位 (a ^ b) = 49 结果为:0011 0001
~ 二进制补码,它是一元的,具有“翻转”的效果 (~a ) = -61有符号的二进制数,表示为1100 0011的补码形式
<< 二进制左移,左操作数的值由右操作数指定的位数左移 a << 2 = 240 结果为:1111 0000
>> 二进制右移,左操作数的值由右操作数指定的位数右移 a >> 2 = 15 结果为:0000 1111

运算符优先级

优先序号 运算符号 描述
1 ** 指数(次幂)运算
2 ~ + - 补码,一元加减(最后两个的方法名称是+@和-@)
3 * / % // 乘法,除法,模数和地板除
4 + - 加法,减法
5 >> << 向右和向左位移
6 & 按位与
7 ^ 按位异或和常规的“OR”
8 <= < > >= 比较运算符
9 <> == != 等于运算符
10 = %= /= //= -= += = *= 赋值运算符
11 is/is not 身份运算符
12 in/not in 成员运算符
13 not/or/and 逻辑运算符

使用各运算符小技巧

  1. # 逻辑运算符运算规则:
  2. ## and看做乘法, or看做加法,True看做1, False看做0
  3. ## 则逻辑运算就能转换成整数数学运算
  4. ## 最后结果如果是0则为False, 否则为True
  5. a = True
  6. b = False
  7. c = True
  8. d = a and b or c # 该式子等价于 d = 1 * 0 + 1
  9. print(d)
  10. e = a or b and a
  11. print(e)
  12. # 短路语句用法:
  13. 2 > 1 and print('lalala')
  14. # 上边是将布尔值当数值来计算,逻辑运算还有一种运算方法,为运算符的原始用法:
  15. a = 1 and 2 + 2
  16. print(a)
  17. # 程序运行逻辑为:先看第一表达式转换成布尔值的结果,如果结果为真,那么它会看第二个表达式转换为布尔值的结果,如果只有两个表达式的话,就只看到第二个表达式,并返回该表达式的值。
  18. # 此处的1 and 2,判断1为真,直接返回2的值,a=2+2=4
  19. # 如果判断第一个表达式为False,直接停止接下来的判断,并返回第一表达式的值,也就是0
  20. # 如果有多个表达式,按此规则,依次往后看。
  21. # p.s: undefined、null、NaN、none、" "、0、false均视为False
  22. # 若果是或运算,和与运算不同,判断第一个表达式为真,就直接返回第一表达式的值,不看后边的了, 第一表达式为假时,才往后看。
  23. 2>1 or print('lalala')
  24. # not非运算,就是结果取反
  25. f = 1
  26. f = not f
  27. print(f)

转义字符

转义字符 描述 语句 打印 备注
\ (在行尾时) 续行符
\ 代表一个反斜杠符号’’
代表一个单引号’ print(‘let’s go’) let’s go 打印单引号
‘’ 代表一个双引号’’
? 代表一个问号?
\a 响铃
\b 退格(Backspace),将当前位置移动到前一列
\e 转义
\f 换页,将当前位置移动到下一页开头
\n 换行,将当前位置移动到下一行开头 print(‘a\nb\nc\n’) 在字符串中添加换行符,使用字符组合\n
\r 回车,将当前的位置移动到本行的开头
\t 横向制表符,跳到下一个TAB的位置 print(‘\tabcdefg’) abcdefg 在字符串中添加空白 ,使用字符组合\t
\v 纵向制表符
\0 空字符
\oyy 八进制数yy代表的字符,例如:\o12代表换行
\xdd 十进制数yy代表的字符,例如:\x0a代表换行
\ddd 1到3位八进制所代表的任意字符
\xhh 1到2位十六进制所代表的任意字符
\other 其他的字符以普通格式输出
  • 带有转义字符的情况下;
  • 或在字符串前加 ‘r’ (取消转义字符) ```python

    输出打印带有特殊符号的字符串,如:将’D:\abc\av.avi’,包括引号在内一起打印出来

    print(“\’D:\abc\av.avi\’”) print(“D:\abc\\nav,avi\n”)

print(‘D:\new’) #本来想打印“new”这个单词,结果被\n换行了 print(‘D:\new’) #再加入一个“\”,比如下面的例子
print(‘D:\new_project\test\nt\files\data’) #如果想正常使用这个路径,我们需要加上多个“\”,很麻烦

取消转移功能

print(r”D:\abc\av.avi”) print(r’D:\new_project\test\nt\files\data’) #是在字符串之前写一个“r”,将它转换为原始字符串 print(r’D:\new_project\test\nt\files\data’’\‘) #以“\”结尾,需要对末尾的“\”单独进行转义,并和前面的字符串连接 print(R”D:\abc\av.avi”) ```