我的Python学习——4.运算符和for循环

>>> 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 是一个质数

 #感觉这样写比较好理解,虽然比上一个复杂一点点

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值