>>> a = 5
>>> a +=3 #自加(减)运算
>>> a
8
>>> a *= 2 #自乘(除)运算
>>> a
16
>>> a /= 4 #除法得到的结果是浮点型
>>> a
4.0
>>> a //=3 #两个//叠加使用是整形,相当于对结果取整
>>> a
1
>>> 11 % 5 #取余运算
1
>>> 3 ** 2 #两个*是平凡运算
9
1.优先级问题:幂运算 正负号 算数操作符 比较操作符 逻辑运算符
ps:**比左边高,比右边低
>>> -3**2
-9
>>> 3**-2
0.1111111111111111
2.逻辑操作符:and or not
0为false 其他为true
>>> not True
False
>>> not 0
True
>>> not 4
False
>>> not -2
False
>>> 3<4<5
True
3.一些特殊语句
elif = else if
体现了Python的简洁性,高度可读性
ps:尽量用if else结构,避免使用多个并列的if。
并列的if会每个判断都执行一遍,消耗CPU时间。
避免“悬挂else”:
if(a>2)
if(a>7)
printf('good!')
else
printf('hey!')
#C语言中else会就近原则,与第二个if匹配;
#Python中严格的缩进规则,与第一个匹配;
条件表达式(三元操作符)
x,y =4,5
if x<y:
small = x
else:
small = y
small = x if x< y else y 与上述相同效果
断言assert
assert后的关键字称为断言,当这个关键字后面的条件
为假,程序自动崩溃并抛出AssertionError的异常
用来在程序中置入检查点,确保某个条件为真才能正常
工作。
>>> assert 3>4
Traceback (most recent call last):
File "<pyshell#31>", line 1, in <module>
assert 3>4
AssertionError
4.for循环
for 目标 in 表达式:
循环体
>>> word = 'hello'
>>> for i in word:
print(i,end = '*')
h*e*l*l*o*
>>> people = ['jane','marry','tom','lisa','jake']
>>> for each in people:
print(each,len(each))
jane 4
marry 5
tom 3
lisa 4
jake 4
//按顺序打印名字并返回每个名字的字母数
5.range()
range([start,]stop[,step = 1])
这个BIF有三个参数,括号里是可选的;默认从0来开始;
step = 1 指第三个参数默认1;
生成一个从start参数值到stop参数值的
值结束的数字序列;不包含stop值本身;
>>> range(5) #默认从0开始
range(0, 5)
>>> list(range(5))
[0, 1, 2, 3, 4]
>>> for i in range(5):
print(i)
0
1
2
3
4
>>> for i in range(2,9): #不包括最后一个
print(i)
2
3
4
5
6
7
8
>>> for i in range(1,10,2): #step = 2, 每隔2输出一个
print(i)
1
3
5
7
9
>>> people = ['jane','marry','tom','lisa','jake']
>>> for index in range(len(people)):
print('当前名字:',people[index])
当前名字: jane
当前名字: marry
当前名字: tom
当前名字: lisa
当前名字: jake
//通过索引实现循环,使用了内置函数range()和len()
6.两个关键语句:
break:退出循环
continue:退出本轮循环,进入下一轮循环,并测试
循环是否成立,成立则进入循环,不成立则退出循环
>>> for i in range(10):
if i%2 != 0:
print(i)
continue
i += 2
print(i)
2
1
4
3
6
5
8
7
10
9
7.小作业:判断10到20之间的质数
>>> for num in range(10,20):
for i in range(2,num): //循环判断除了1和num本身,num是否还有其他因子
if num % i == 0:
j = num // i //如果有一个因子i,则算出另一个因子j
print(num,' = ',i,' * ',j)
break
else:
print(num,'是一个质数') //判断完毕,没有其他因子,确定num为质数
10 = 2 * 5
11 是一个质数
12 = 2 * 6
13 是一个质数
14 = 2 * 7
15 = 3 * 5
16 = 2 * 8
17 是一个质数
18 = 2 * 9
19 是一个质数
#这段代码中的else的位置我不太明白,但是如果跟内循环if对齐,会导致每次第二层循环只能进行一次,15会
被判断为质数。如果去掉else,后面的print跟for对齐会导致每次外循环结束都会打印当前num是一个
质数;print跟内循环if对齐也会导致每次第二层循环只能进行一次。
#所以笔者决定在打印当前num是一个质数之前,先判断内循环是否执行完。
>>> for num in range(10,20):
for i in range(2,num):
if num % i == 0:
j = num // i
print(num,' = ',i,' * ',j)
break
if i == num-1:
print(num,'是一个质数')
10 = 2 * 5
11 是一个质数
12 = 2 * 6
13 是一个质数
14 = 2 * 7
15 = 3 * 5
16 = 2 * 8
17 是一个质数
18 = 2 * 9
19 是一个质数
#感觉这样写比较好理解,虽然比上一个复杂一点点