三.python入门语法1

目录

[1. 算数运算和关系运算](#1. 算数运算和关系运算)

[1.1. 算术运算符](#1.1. 算术运算符)

[1.2. 关系运算符](#1.2. 关系运算符)

习题

2.赋值运算和逻辑运算

[2.1. 赋值运算符](#2.1. 赋值运算符)

[2.2. 逻辑运算符](#2.2. 逻辑运算符)

3.位运算符

1)位与运算(A&B)

2)位或运算(A|B)

3)异或位运算(A^B)

4)按位取反运算(~A)

5)左右位移


1. 算数运算和关系运算

上一节我们学习了Python的输入输出,目前我们已经了解了Python的基础规范,接下来我们要讲一下Python的运算符 ,运算符是一些特殊的符号,通过运算符将不同的数据连接构成表达式。先通过一张图来看一下常用操作符

我们先从算术运算符来介绍。

1.1. 算术运算符

|------|----|--------|-----------|
| 运算符 | 功能 | 输入 | 输出 |
| + | 加 | 66+22 | 88 |
| - | 减 | 66-22 | 44 |
| * | 乘 | 11*6 | 66 |
| / | 除 | 60/10 | 6 |
| % | 取余 | 10%9 | 1 |
| // | 整除 | 20//9 | 2 |
| ** | 幂 | 3**3 | 27,即三的三次方 |

这里的 '/' 和c语言的区别,一定要注意区分。

下面我们来看一个实例:

python 复制代码
 print("+号的功能是:66+22=",66+22)

 print("-号的功能是:66-22=",66-22)

 print('*号的功能是:11*66=',11*66)

 print("/号的功能是:60/10=",60/10)

 print('%号的功能是:30%9=',30%9)

 print('//号的功能:30//9=',30//9)

 print('**号的功能:2**3=',2**3)

输出结果为:

|---------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 | ``+``号的功能是:``66``+``22``= 88 ``-``号的功能是:``66``-``22``= 44 ``*``号的功能是:``11``*``66``= 726 ``/``号的功能是:``60``/``10``= 6.0 ``%``号的功能是:``30``%``9``= 3 ``/``/``号的功能:``30``/``/``9``= 3 ``*``*``号的功能:``2``*``*``3``= 8 |

下面给大家讲一下算术运算符的扩展功能及注意事项:

  1. 加法运算符'+'不仅提供加运算,还支持连接字符串的功能。

  2. 减法运算符'-' 不仅提供减运算,还支持取负操作。

  3. 乘法运算符'*'不仅提供乘运算,还支持列表的倍数添入以及字符串N个的连接。

  4. 除法运算符'/'在使用的过程中,必须要注意分母不能为'0',否则会出现语法错误。

这里也可以体现python语言的简便性,更加的人性化,比较亲和随意。

看下面一个例子:

python 复制代码
 test = 'dotcpp'

 tests = '我是dotcpp'

 final = test + tests#这里'+'连接了test和tests两个字符串

 number = 1000

 newnumber = -number#这里'-'将number取负

 index = [1,2,3,4]

 index = index*3

 print(final)#'+'连接后的test+tests

 print(newnumber)#'-'取负后的number

 print(index)#'*'倍数添入后的index

输出结果:

|-------|----------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 | ``dotcpp我是dotcpp ``-``1000 ``[``1``, ``2``, ``3``, ``4``, ``1``, ``2``, ``3``, ``4``, ``1``, ``2``, ``3``, ``4``] |

1.2. 关系运算符

定义:a=1,b=2

|-----|--------|-------|-------|
| 运算符 | 功能 | 输入 | 输出 |
| > | 大于 | a>b | False |
| < | 小于 | a<b | False |
| != | 不等于 | a!=b | True |
| == | 判段是否相等 | a==b | False |
| >= | 大于等于 | a>=b | False |
| <= | 小于等于 | a<=b | True |

True代表可执行接下操作,False则不可以。

简单看一下下面测试代码:

python 复制代码
 a = 1

 b = 2

 if a < b:
     print('a小于b')

 if a != b:
     print('a不相等b')

输出结果:

|-----|----------------------|
| 1 2 | ``a小于b ``a不相等b |

习题

1.题目 1000: [竞赛入门]简单的a+b

python 复制代码
while True:
	try:
		a,b=map(int,input().strip().split())
		print(a+b)
	except:
		break

"""
#input():获取用户输入的一行文本。
.strip():去除输入文本首尾的空白字符(包括空格、换行符等)。
.split():将处理过的字符串以空格为分隔符进行分割,返回一个字符串列表。
map(int, ...):将上一步得到的字符串列表中的每个元素映射为整数。

"""

2.题目 1037: [编程入门]宏定义的练习

python 复制代码
a, b = map(int, input().split())
print(a % b)

3.三角形面积

python 复制代码
a,b,c=map(int,input().split())
S=(a+b+c)/2
area=pow(S*(S-a)*(S-b)*(S-c),0.5)
print("%.3f"%area)

2.赋值运算和逻辑运算

2.1. 赋值运算符

赋值运算符从字面上可以理解为赋给变量一个值,通常我们用'='将右边的指赋给左边。

结构为:

变量 = 值

A = 123

下面来通过下表来看一下常用的赋值运算符

|-------|------|-------------------|
| 运算符 | 功能 | 输入 |
| = | 赋值 | a=2 |
| -= | 减赋值 | a-=2(a=a-2) |
| += | 加赋值 | a+=2(a=a+2) |
| *= | 乘赋值 | a*=2(a=a*2) |
| /= | 除赋值 | a/=2(a=a/2) |
| %= | 取余赋值 | a%=2(a=a%2) |
| **= | 幂赋值 | a**=2(a=a**2) |
| //= | 整除赋值 | a//=2(a=a//2) |

我们通过一个实例来了解一下赋值运算符:

python 复制代码
 test = 66

 print('将test加上88')

 test += 88

 print(test)

 print('将结果翻10倍')

 test *= 10

 print(test)

 print('将结果除以50')

 test /= 50

 print(test)

 print('将结果取余5')

 test %= 5

 print(test)

输出结果:

|-----------------|---------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 | ``将test加上``88 ``154 ``将结果翻``10``倍 ``1540 ``将结果除以``50 ``30.8 ``将结果取余``5 ``0.8000000000000007 |

2.2. 逻辑运算符

a=5,b=1

|-----|----|--------------------|-------|
| 运算符 | 功能 | 输入 | 输出 |
| and | 与 | a>0 and a>b | True |
| or | 或 | a>100 or a>b | True |
| not | 非 | not(a>b and a>0) | False |

同之前的例子一样,True可进入后续语句,而False不可以。

下面我们来看一段实例:

python 复制代码
 a=66

 b=77

 c=88

 if c > b and c > a:#此语句意 如果c大于b 并且c大于a

     print('c是最大的')

 if b > a or b > c:#如果b大于a 或者 b大于c

     print('b不是最小的')

 if not(a > b or a > c):#如果不满足a>b或者 a<c

     print('a是最小的')

输出结果为:

|-------|-----------------------------------|
| 1 2 3 | ``c是最大的 ``b不是最小的 ``a是最小的 |

在做算法题的时候,逻辑运算符的使用往往决定了我们做的题是否正确。

拿下面一个例子来说:

小明的爸妈对小明的零花钱管的很严,小明的学科有y和s,当小明的考试成绩两门同时取得1(分为:1,2,3三个等级,规定级别1级>2级>3级)时会获得10元零花钱,两门同时达到2级未达1时会有5元零花钱,如果有一门为1时则获得3元零花钱,如果有一门在2以下就没有零花钱可得,那么当小明y和s的成绩分别为1和3,或者2和3时,小明分别会有多少零花钱?

代码如下:

python 复制代码
y = int(input())

 s = int(input())

 money = 0

 if y == 1 and s == 1:#同时为级别1时

     money += 10

 elif y == 2 and s == 2:#同时为级别2时

     money += 5

 elif y == 1 or s == 1:#有一门以上为1时

     money += 3

 elif y == 3 or s == 3:#有一门以上为3时

     money = 0

 print('小明的零花钱:',money)

输出结果:

|-------|--------------------------------|
| 1 2 3 | ``1 ``3 ``小明的零花钱: ``3 |

|-------|--------------------------------|
| 1 2 3 | ``2 ``3 ``小明的零花钱: ``0 |


3.位运算符

位操作符 属于操作符中比较难的内容,位操作符以二进制为单位进行运算,操作的对象以及结果都是整数型。位操作符有如下几个:&(按位与)、|(按位或)、^(按位异或)、~(按位取反)、>>(右位移)和<<(左位移)。

具体说明看下表:

|------|------|--------|------------|
| 运算符 | 名称 | 例子 | 功能 |
| & | 按位与 | A&B | A和B进行位与运算 |
| | | 按位或 | A|B | A和B进行位或运算 |
| ~ | 按位取反 | ~A | A进行取反运算 |
| ^ | 按位异或 | A^B | A和B进行位异或运算 |
| >> | 右位移 | A>>c | A右移c位 |
| << | 左位移 | A<<c | A左移c位 |

依此介绍一下各种位运算。

1)位与运算(A&B)

位与运算中,A和B按位进行与运算,当每位对应全是1的时候对应结果位1,反之为0

|---|---|---|---|---|---|---|---|
| 1 | 0 | 1 | 1 | 1 | 0 | 0 | 1 |
| 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 |
| 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 |

可以看出,当10111001&00100011得到00100011。当对应位同时为1才为1。

2)位或运算(A|B)

|---|---|---|---|---|---|---|---|
| 1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 |
| 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 |
| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |

可以看出,当10110010 | 01011110得到11111110,对应位置存在一个1的时候即为1。

3)异或位运算(A^B)

|---|---|---|---|---|---|---|---|
| 1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 |
| 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 |
| 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0 |

可以看出,10110010^01011110得到11101100,对应位置相反的时候,即0对应1,1对应0的时候得到1。

4)按位取反运算(~A)

|---|---|---|---|---|---|---|---|
| 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
| 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 |

按位取反的过程中需要运用补码运算,即0补为1,1补为0。

5)左右位移

右移时,(第一行为移动前,第二行为移动后)

|---|---|---|---|---|---|---|---|---|
| | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
| | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 |

右边最低位为溢出位被丢弃,在填充左侧最高位时,如果最高位是0,则填0,如果最高位是1,则填1。右移相当于除上2的n次方。

左移时, (第一行为移动前,第二行为移动后)

|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | |
| | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 |

左边最高位为溢出位被丢弃,在最右边空位补0,左移相当于乘上2的n次方。

这章内容带领大家深入了解计算机世界的0和1,可以选择性去掌握了解,最后来介绍一下运算符的优先级,在算法运算时遇到操作符优先级问题的时候可以参考此表格。

|------|---------------------|
| 由低到高 | <、>、<=、>=、!=、== |
| 由低到高 | | |
| 由低到高 | ^ |
| 由低到高 | & |
| 由低到高 | <<、>> |
| 由低到高 | +、- |
| 由低到高 | *、/、%、// |
| 由低到高 | ~、+、- |
| 由低到高 | ** |

相关推荐
o(╥﹏╥)3 分钟前
linux(ubuntu )卡死怎么强制重启
linux·数据库·ubuntu·系统安全
阿里嘎多学长17 分钟前
docker怎么部署高斯数据库
运维·数据库·docker·容器
Yuan_o_20 分钟前
Linux 基本使用和程序部署
java·linux·运维·服务器·数据库·后端
Sunyanhui124 分钟前
牛客网 SQL36查找后排序
数据库·sql·mysql
云云32129 分钟前
怎么通过亚矩阵云手机实现营销?
大数据·服务器·安全·智能手机·矩阵
fkdw35 分钟前
C# Newtonsoft.Json 反序列化派生类数据丢失问题
c#·json
灯火不休➴35 分钟前
[Xshell] Xshell的下载安装使用、连接linux、 上传文件到linux系统-详解(附下载链接)
linux·运维·服务器
小峰编程37 分钟前
独一无二,万字详谈——Linux之文件管理
linux·运维·服务器·云原生·云计算·ai原生
卜及中37 分钟前
【Linux】资源隔离机制 — 命名空间(Namespace)详解
linux·服务器·php
老王笔记38 分钟前
MHA binlog server
数据库·mysql