三.python入门语法1
目录
1. 算数运算和关系运算
1.1. 算术运算符
1.2. 关系运算符
习题
2.赋值运算和逻辑运算
2.1. 赋值运算符
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语言的区别,一定要注意区分。
下面我们来看一个实例:
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 |
|
下面给大家讲一下算术运算符的扩展功能及注意事项:
1) 加法运算符‘+’不仅提供加运算,还支持连接字符串的功能。
2) 减法运算符‘-’ 不仅提供减运算,还支持取负操作。
3) 乘法运算符‘*’不仅提供乘运算,还支持列表的倍数添入以及字符串N个的连接。
4) 除法运算符‘/’在使用的过程中,必须要注意分母不能为‘0’,否则会出现语法错误。
这里也可以体现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 |
|
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则不可以。
简单看一下下面测试代码:
a = 1
b = 2
if a < b:
print('a小于b')
if a != b:
print('a不相等b')
输出结果:
1 2 |
|
习题
1.题目 1000: [竞赛入门]简单的a+b
while True:
try:
a,b=map(int,input().strip().split())
print(a+b)
except:
break
"""
#input():获取用户输入的一行文本。
.strip():去除输入文本首尾的空白字符(包括空格、换行符等)。
.split():将处理过的字符串以空格为分隔符进行分割,返回一个字符串列表。
map(int, ...):将上一步得到的字符串列表中的每个元素映射为整数。
"""
2.题目 1037: [编程入门]宏定义的练习
a, b = map(int, input().split())
print(a % b)
3.三角形面积
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) |
我们通过一个实例来了解一下赋值运算符:
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 |
|
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不可以。
下面我们来看一段实例:
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 |
|
在做算法题的时候,逻辑运算符的使用往往决定了我们做的题是否正确。
拿下面一个例子来说:
小明的爸妈对小明的零花钱管的很严,小明的学科有y和s,当小明的考试成绩两门同时取得1(分为:1,2,3三个等级,规定级别1级>2级>3级)时会获得10元零花钱,两门同时达到2级未达1时会有5元零花钱,如果有一门为1时则获得3元零花钱,如果有一门在2以下就没有零花钱可得,那么当小明y和s的成绩分别为1和3,或者2和3时,小明分别会有多少零花钱?
代码如下:
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 2 3 |
|
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,可以选择性去掌握了解,最后来介绍一下运算符的优先级,在算法运算时遇到操作符优先级问题的时候可以参考此表格。
由低到高 | <、>、<=、>=、!=、== |
| | |
^ | |
& | |
<<、>> | |
+、- | |
*、/、%、// | |
~、+、- | |
** |