python讲解(4)

一.关系运算符

使用关系运算符对float类型的数据进行比较时会出现出现一定的问题。

print(0.1 + 0.2 == 0.3)

运行这个代码,在控制台会打印False,说明0.1 + 0.2是不等于0.3的。但这是不符合常理的。

这是因为浮点数类型的数据在内存中的存储和表示是具有一定的误差的

print(0.1 + 0.2)

控制台上会打印0.30000000000000004。而不是0.3.

所以在比较浮点数时我们一般会使用差值比较的方式。

a = 0.1 + 0.2
b = 0.3
print(-0.00001 < (a - b) < 0.00001) 

只要它的差值小于我们所期望的值,我们就可以认定a和b是相等的。 

二.逻辑运算符

逻辑运算符有三个分别是and or not 分别对应C中的&& || !

 1.and(逻辑与)

 and两侧的操作数均成立,表达式的值才是True,只要有一个不成立就是False

a = 10
b = 20
c = 30
print(a < b and b < c)  
print(a < b and b > c)
print(a > b and b > c)

 只有第一个是True,其余两个均是错的。

 2.or(逻辑或)

 or两侧的操作数只要有一个成立,表达式的值就是True,均不成立就是False

a = 10
b = 20
c = 30
print(a < b or b < c)  
print(a < b or b > c)
print(a > b or b > c)

只有最后一个是False。 

3.not(逻辑取反)

not就是将其的操作数的值变为另一个bool类型。

a = 10
b = 20
c = 30
print(not(a < b and b < c))

本来a < b and b < c是True,但是加上not它就变成了False。

4.短路求值

 这个和C语言中的&&  || !是一样的。

print(10 > 20 and 10 / 0 == 1)

运行这个代码,会打印False,但是我们知道0是不能做除数的。

但是这个代码并没有报错。这是为为什么呢?

因为左侧的10 > 20一定是False,但是and要使表达式的值为True,两侧的操作数必须是True,但是已经知道左侧为False,那么右侧不管是什么,表达式一定返回False。所以为了更加便捷,右侧的表达式就不会运行了。

print(10 < 20 or 10 / 0 == 1)

同理的or也是如此,因为10 < 20 一定是True,所以无论右侧的表达式是False还是True,or都会返回True,所以右侧的操作数也不计算了。

三.链式赋值

赋值号=是可以连续使用的。

a = b = 10

10先赋值给b,b的值就变成了10 然后再将b的值也赋值给a,这样a和b的值就都变成了10.

还有一种赋值方式:

a, b = 10, 20

这样的赋值可以用一行代码对不同的变量同时赋值,a就是10 ,b就是20.但是一般来说并不会这样赋值,可读性较低。

但是这种赋值的方式还存在一个特殊的用法。变量交换。

一般来说我们实现两个变量的值的互换我们是需要进行再使用一个变量的。

a = 10
b = 20
tmp = a
a = b
b = tmp
print(a, b)

通过第三个变量,tmp我们就可以实现a和b的互换

但是使用,我们就可以在不使用第三个变量我们就可以实现a和b的交换。 

a = 10
b = 20
a, b = b, a
print(a, b)

 四.复合操作符

复合操作符有很多种,+= /=  %= **= *= /= 

复合操作符均是通过其他算术运算符和=相结合而得到的。

a = a + 1
等价于
a += 1

 其他的复合操作符,也是一模一样的。

在python这种++ --的自增自减操作符是不支持的。 

a++
b--

在编译器中是会直接报错的。这是不支持的。

但是我们会发现++a却不会,只会发出警告提示这样的语句是没有作用的,那是因为这里编译器会理解成正号,所以两次正号并不会改变值,包括--也不会有作用,负负得正。

其实++ -- 这样的操作符是并不好的。所以在Go语言中,作者C语言之父肯汤姆逊废除了前置++而保留了后置++这样的操作。

在python中,bool值是可以与整数相加的,如果进行算术运算会把True当作1,False当作0.但是这样的操作是没有意义的。在python中是只有字符类型的,只有字符串类型,

'a'这样的叫做长度为一个字节的字符串,而不是字符。这也是为什么python没有像C语言那样区分单双引号。

分号:在python中是不需要使用分号的,在C语言中分号表示一个语句的结束。但是python并没有使用分号,一个语句结束后换行就是下一个语句。所以是不需要写分号,但是有一种情况是必须要加分号的。

a = 0; print(a)

当我们在一行中写了多个语句后我们就需要使用分号加以区分,但是我们不建议这样写代码,这样的可读性太低了。

五.条件语句

顺序语句:默认情况下,代码的执行情况是自上而下依次进行的。并不会打乱情况。

print('1')
print('2')
print('3')

会依次打印1 2 3

条件语句的语法形式

if expression:
    
else:

例:输入1,打印hehe,输入2,打印haha

val = input("输入1或者2:")
if val == '1':
    print("hehe")
else:
    print("haha")

print的前面必须要有缩进这个缩进按键盘上的Tab键就可以了。是4个空格。

这个缩进代表这是if或者else下引领的语句。因为不像C语言中是有代码块的。

缩进是非常重要的。

嵌套条件语句

if a == 1:
    if b == 2:
        print("1")
    else:
        print("2")
else:
    print("3")

第一个print前面有两个缩进,代表这个语句是第二个if下的语句而不是第一个。

闰年判断 

闰年的要求就是可以被4整除,不能被100整除或者可以被400整除。

a = int(input(''))
if (a % 4 == 0 and a % 100 != 0) or a % 400 == 0:
    print("闰年")
else:
    print("非闰年")

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值