1.算术运算符
/ 运算,商为
浮点类型
,且商为无限小数是会不准确(二进制的用穷性)。
// 整除运算,向下取商整数
% 余数运算, 取余数部分(只能为正数)
divmod(x//y, x%y)–>divmod(商,余数)
print(内部浮点数运算)会出现数值离谱等错误。
解决方法:
from decimal import Decimal
print(Decimal('5.4')-Decimal('3'))
2.比较运算符
注意:
1.重点在比较数值的大小 str与Int不能直接比较
2.!= == 这种符号不能分开抒写(eg:! =错误)
3.字符串与字符串的比较是转为Ascii比较
4.<>在python3已经弃用,仅用!=
5.a>b>c—> a>b and b>c
当a>b为True和b>c都为True时 结果才为True
3.赋值运算符
“=”右边赋值给左边。
4.逻辑运算符
and:两个都Ture→Ture
or:只要有一个为Ture→Ture
短路(懒惰)原则
5.成员运算符
运算符
描述
in
判断某个值是否在指定序列中,在则返回True
not in
判断某个值是否在指定序列中,不在则返回True
6.身份运算符
运算符
描述
is
判断两个对象的内存地址是否一致,是则返回True
is not
判断两个对象的内存地址是否不一致,不是则返回True
7.三目运算符
如果if后面的表达式成立,则执行if前边的代码否则,执行else后边的代码’’’
例:
li = [1, 2, 3, 4]
print("in" if 5 in li else "not in")
作业1
判断"amy"是否在[“bob”,“tony”,“Lisa”,“Steven”]里面如果在则输出"amy 在逻辑大家庭"否则输出"amy 不在.…好难过"
答:
lie_biao=["bob","tony","Lisa","Steven"]
print("amy 在逻辑大家庭"if 'amy'in lie_biao else"amy 不在.…好难过")
作业2
‘ax’
答:Ture 因为首先比较’a’和’x’的Ascii码,通过查表得知x Ascii码比a大,所以返回Ture
作业3
以下程序如果输入666执行那个语句?为什么?
temp=input('请输入:')
if temp == 'Yes' or 'yes':
print('if执行了!')
else:
print('else执行了!')
答:‘if执行了!’
原因:摘抄自CSDN文章
Python基础练手习题一
or 运算符只要两边有一个为true 就会返回true
"
temp == “YES”or "yes"
因为 == 运算符优先度比or运算符的高,所以先会判断or左边的表达式,如果左边的为结果true 右边的就不用计算了,左边结果为false的话,就会计算右边的结果,右边的为一个字符串“yes”,它是一个有值的字符串,所以or右边的结果是true。
简单来说就是把
if temp == "YES" or "yes"
看成
if (temp == "YES") or ("yes")
你就会发现 or 右边的结果会一直为 true ,不管输入我们输入什么字符串,都会执行 if 语句
解决方法为:
if temp == 'YES' or temp == 'yes'
附:运算符的优先级 顺序依次递增
Lambda #运算优先级最低
逻辑运算符: or
逻辑运算符: and
逻辑运算符:not
成员测试: in, not in
同一性测试: is, is not
比较: , >=, !=, ==
按位或: |
按位异或: ^
按位与: &
移位: << ,>>
加法与减法: + ,-
乘法、除法与取余: *, /, %
作业4
is与==的区别?
答:==是python标准操作符中的比较操作符,用来比较判断两个对象的value(值)是否相等。
is也被叫做同一性运算符,这个运算符比较判断的是对象间的唯一身份标识,也就是id是否相同。
对象的id可通过id()查看。
作业5
用户输入a,b。
当a与b都不为0时则输出a 与b做商否则输出a与b 的乘积。
答:
no_1=input('请输入一个数值A:')
no_2=input('请再输入一个数值B:')
if int(no_1) != 0 and int(no_2) != 0:
print(int(no_1)/int(no_2))
else:
print(int(no_1)*int(no_2) )
为保证用户输入格式正确更加严谨的代码为:
no_1=input('请输入一个数值A:')
if no_1.isdigit() or type(eval(no_1)) == float:
pass
else:
while no_1.isdigit()==0 or type(eval(no_1)) != float:
no_1=input('输入格式错啦,请您重新输入数值A:')
no_2 = input('请再输入一个数值B:')
if no_2.isdigit() or type(eval(no_2)) == float:
pass
else:
while no_2.isdigit()==0 or type(eval(no_2)) != float:
no_2=input('输入格式错啦,请您重新输入数值B:')
print(eval(no_1)/eval(no_2) if eval(no_1) != 0 and eval(no_2) != 0 else eval(no_1)*eval(no_2) )
作业6
基于题5,使用三目运算符输出a,b 较大的数。
答:
no_1=input('请输入一个数值A:')
no_2=input('请再输入一个数值B:')
print(int(no_1) if int(no_1) > int(no_2) else int(no_2))