周五,晴,记录生活分享点滴
参考博客:https://www.cnblogs.com/resn/p/5776403.html
Python版本:3.5
运算符
算数运算符:
+ - * / //(取整除) %(取余) **(指数:2**3-->2的3次方)
比较运算符:
>、 <、 >=、 <=、 ==(等于:表示两个变量的值是否一样)、!=(不等于)
>>> a = 5 >>> b = 3 >>> a > b # 检查左操作数的值是否大于右操作数的值,如果是,则条件成立。 True >>> a < b # 检查左操作数的值是否小于右操作数的值,如果是,则条件成立。 False >>> a <= b # 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件成立。 False >>> a >= b # 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成立。 True >>> a == b # 检查两个操作数的值是否相等,如果是则条件变为真。 False >>> a != b # 检查两个操作数的值是否相等,如果值不相等,则条件变为真。 True
小结:关注一下最后两行,易混淆。
赋值运算符
= 、+=、 -=、 *=、 /=、 %=、 //=、 **=
>>> num = 2 >>> num += 1 # 等价于 num = num + 1 >>> num -= 1 # 等价于 num = num - 1 >>> num *= 1 # 等价于 num = num * 1 >>> num /= 1 # 等价于 num = num / 1 >>> num //= 1 # 等价于 num = num // 1 >>> num %= 1 # 等价于 num = num % 1 >>> num **= 2 # 等价于 num = num ** 2
逻辑运算符
not (否定/双否定)、and(交集/且)、 or(并集/或)
>>> a > b and a < b # 如果两个操作数都是True,那么结果为True,否则结果为False。 False >>> a > b or a < b # 如果有两个操作数至少有一个为True, 那么条件变为True,否则为False。 True >>> not a > b # 反转操作的状态,操作数为True,则结果为False,反之则为True False
小结:如果not、and、or出现在同一指令中,正常顺序是从左到右,但推荐使用小括号进行先后顺序的区分。
最大值
思路:
- 输入三个数,
- 比较第一、二个数:如果第一个数大于第二个数,则第一个数为最大值,
- 将最大值同第三个数比较:如果最大值大于第三个数,则打印最大值即第一个数,反之打印第三个数,
- 如果2不成立,第一个数不大于第二个数,则设第二个数为最大值,
- 再将最大值即第二个数与第三个数相比较:如果第二个数大于第三个数,则打印最大值即第二个数,反之第三个数。
num1 = input("Num1:") num2 = input("Num2:") num3 = input("Num3:") if num1>num2: max_num=num1 if max_num>num3: print("MAX NUM is",max_num) else: print("MAX NUM is",num3) else: max_num = num2 if max_num>num3: print("MAX NUM is",max_num) else: print("MAX NUM is",num3)
小结:最大值 max_num的灵活运用,因为是三个数,按照正常运算逻辑,需要先比较其中的两个数,在与第三个数相比较。
表达式
运算符和操作数结合起来叫做表达式。
短路原则
对于and:如果前面的第一个条件为假,那么这个and前后两个条件组成的表达式 的计算结果就一定为假,第二个条件就不会被计算
对于or :如果前面的第一个条件为真,那么这个or前后两个条件组成的表达式 的计算结果就一定为真,第二个条件就不会被计算
小结:
- 因为and是且的关系,所以前面若假则全部为假,or为或的关系,所以前面为真则全部为真
- and、or、not 从左往右依次运行,推荐用小括号区分运行的顺序。
while循环
猜年龄(while版)
思路:
- 设置一个变量为正确的,
- 针对这个变量的while循环开始,
- 给出用户输入年龄的功能,
- 如果用户输入年龄正确,则打印结果(Yes),
- 第一个如果不成立呢(否则 如果),用户输入年龄偏大,则打印(Is bigger)结果,
- 前面的都不成立(否则),用户当前输入的年龄剩下最后一种可能,所输入年龄偏小,则打印(Is smaller)结果。
age = 50 flag = True while flag : user_input_age = int(input("Age is :")) if user_input_age == age: print("Yes") flag = False elif user_input_age > age: print("Is bigger") else: print("Is smaller ") print("End")
小结:针对猜年龄游戏,需要考虑到所有可能结果数,即大于、小于、等于三个可能,通过if、elif、else来引出。
猜年龄(while-break版)
在1)的基础上增加break命令,即如果用户输入年龄正确,则运行break命令,中断循环,打印(End)提示。
age = 50 while True: user_input_age = int(input("Age is :")) if user_input_age == age: print("Yes") break elif user_input_age > age: print("Is bigger") else: print("Is smaller") print("End")
break的运用
break的作用: 结束循环,在死循环中,也可以通过设置一定的条件来结束循环。
num = 1 while num < 10: print(num) num += 1 if num == 5: break
continue的运用
continue表示继续的含义,当运行到如果当前数字等于3时,continue指令出发,表示继续这个循环,而不输入打印结果
在if 命令不成立时,则输出打印结果。
所以打印结果为:2、4、5、6、7、8、9、10、11
num = 1 while num <=10: num += 1 if num == 3: continue print(num)
while....else....语句
正常循环结束(无break时),执行else语句
num = 1 while num <= 10: num += 1 if num == 5: continue print(num) else: print("This is else statement")
end作用 含义
end="__" 默认不换行,最后的结尾是下划线(__)
换行符:
- (Linux系统), (Windows系统) , (Mac系统)
- 可以在python中默认指定为换行符,这行数据最后结尾的字符,是不可见的,但是可以指定它
- 同空格、制表符一样,都不可见
- 是windows的回车(Enter),回车表示当前行的第一个位置,加上 以后会移到下一行的第一个位置
- (Linux系统)移动到下一行 , (Mac系统)移动到下一行
num1 = 0 while num1<=5: print(num1,end="_") num2 = 0 while num2<=7: print(num2,end="-") num2+=1 num1+=1 print() #print(end=" ")
小结:
- end=" " 为不换行标志,如果想得到横排的序列,需要输入end=" " ,
- print() 为换行标志,如果想得到竖排的序列,需要输入print()
- print() 即 print(end=" ")
高度、宽度的自定义
height = int(input("Height:")) width = int(input("")) num_height = 1 while num_height <= height: num_width =1 while num_width <= print("#", end="") num_width += 1 print() num_height += 1
小结:排列顺序是先从左到右,再从上到下依次排列
嵌套循环
矩形排列
height = int(input("Height:")) width = int(input("")) num2 = height while num2 > 0: num1 = width while num1 >0: print("#",end="") num1 -= 1 print() num2 -= 1
小结:
- 大体上与8相同,
- 其中的不同点是高度和宽度以其他变量的形式命名,易于区分;
- while循环的条件不同,8是小于等于用户所输入的值,这个是大于0,因为这个是while循环中引用的用户所输入的值,而8中应用的是一个固定的值。
三角排列
思路:
当进行赋值后,line=5,即tmp=5,早第二个(内部)while循环中进行tmp的循环,直到tmp不大于0为止,第一行结束。
line减一,即line=4,继续tmp=4,继续进行第二个while循环。
line = 5 while line>0: tmp = line while tmp>0: print("*",end="") tmp = tmp-1 print() #print(line) line -= 1
小结:输出顺序依次是先从左到右,再从上到下排列
九九乘法表
first = 1 while first<=9: sec = 1 while sec <= first: print( str(sec)+"*"+ str(first) +"="+str(sec * first), end=" ") sec += 1 print() first += 1
小结:
- 输出顺序依次是先从左到右,再从上到下排列
- 结果是一个式子,打印格式以拼接的方法进行,str表示把数据转换为字符串,end=“ ”表示不换行