python进阶之路
Day2
hello world!今日是python学习的第二天,我将会在下面文章对基础语法进行一些介绍,主要为给变量赋值的基本原理介绍、运算符的相关学习等。
1.给变量赋值的基本原理介绍
当给变量赋值的时候,会先在内存中开辟空间保存数据(开辟的内存空间的大小由数据来决定),然后将数据对应的内存空间和变量进行关联,重新给变量赋值的时候,又会重新开辟新的空间保存新的数据(开辟的内存空间的大小由新数据来决定),然后再将新数据对应的内存空间和变量重新进行关联。
总的来说,根据数据分配内存空间,可以有效避免溢出问题。在赋值时,会在新的内存区域创造新的内存空间以对应新的数据。旧的数据会自动清除。
与c/java不同的是,在python中同一个变量赋不同的值其地址会发生改变,如下:
num = 100
print(id(num))# 140733696413040
num = 'abc'
print(id(num))# 1254624370864
代码中所用的id函数用来获取变量的地址,其语法为:id(变量)
2.运算符
在python中,运算符主要分为四种,分别是:数学、比较、逻辑、赋值,下面会主要讲述这四种运算符的相关内容。
2.1数学运算符
在python中,数学运算符主要有:+(加),-(减),*(乘),/(除),%(取模、取余),
//(整除),**(幂运算)
1) + 、-、*、/ 这四种运算符与数学中的没有区别,如下
print(1+1)# 2
print(4-3)# 1
print(2*4)# 8
print(9/2)# 4.5 注:除法运算要注意一点,其运算的结果为浮点数
2)% - 取模,取余(求余数)
print(5%2)
应用1:判断整数的奇偶性:根据整数对2取余的结果是否是0来判断这个数是否是偶数。
print(10 % 2)
print(15 % 2)
应用2:取整数的低位数
num = 899
print('个位数为:',num % 10)# 9
3)// - 整除(除法运算后,商向下取整(小))
print(5 / 2)# 2.5
print(5 // 2)# 2
print(-5 // 2)#-3
应用:取整数的高位数
num = 234
print(num // 100)
练习:将num=234中的十位数取出来:
num = 234
print('十位数为:',num // 10 % 10)
方法2:
print(num % 100 // 10)
4) ** - 幂运算:x**y - 求x的y次方
print(2 ** 3)
print(16 ** 0.5)
2.2比较运算符:>,<,==,>=,<=,!=(不等于)
所有的比较运算符的结果都是布尔值。
print(10 > 20)#False
print(100 == 100)#True
python中的比较运算符支持表示范围的连写方式
age = 18
print(10 <= age <= 28)
2.3逻辑运算符:and(与),or(或),not(非)
实际开发过程中,逻辑运算符的运算对象一般都是布尔值,结果也是布尔值
2.3.1 and - 逻辑与运算
运算规则:真真为真,其余为假。
True and True - True
True and False - False
False and True - False
False and False - False
应用:如果希望多个条件同时满足,那么就使用and加条件进行连接,相当于生活中的并且。
练习:定义两个变量分别保存一个学生的绩点与操评分,最后根据分数的值打印这个学生是否能拿奖学金,
(条件:绩点不低于3.5,操评分大于90,是否能拿奖学金:True/False)
gpa = float(input('请输入绩点:'))
score = int(input('请输入操评分:'))
print('奖学金获得结果:',gpa >= 3.5 and score > 90)
2.3.2 or - 逻辑或
运算规则:假假为假,其余为真。
True and True - True
True and False - True
False and True - True
False and False - False
应用:多个条件中只要有一个满足条件,那么就是 or 将多个条件进行连接;相当于生活中的或者。
练习:判断一个数是否能够被3或者7整除
(xxx能被3或者7整除:True/False)
num = int(input('请输入一个数:'))
print('能被3或者7整除的结果:',num % 3 == 0 or num % 7 == 0)
2.3.3 not - 逻辑非
运算对象:not 条件
not True - False
not False - True
age = 20
print('是否成年;', not age>=18)
练习:判断一个数是否不能同时被3或者7整除
分析:正向写有三种情况:a。能被3整除,不能被7整除。
b。不能被3整除,能被7整除。
c。不能被3整除,不能被7整除。
反向写只要将同时被3与7整除的情况否掉即可。
num = int(input('请输入一个数:'))
print('该数是否不能同时被3或者7整除:', not (num%3==0 and num%7==0))
print('该数是否不能同时被3或者7整除:', not num%21==0)
练习2:判断指定的年是否是闰年(能被4整除不能被100整除或者能被400整除)
year = int(input('请输入年份:'))
print('该年是否是闰年:', (year % 4 == 0 and year % 100 != 0) or year % 400 == 0)
2.3.4 逻辑运算符的运算对象不是布尔的情况分析
表达式1 and 表达式2 - 如果表达式1的布尔值是True,那么整个运算结果为表达式2的值
如果表达式1的布尔值是False,那么整个运算结果为表达式1的值
注意:0与空值的布尔值为False
表达式1 or 表达式2 - 如果表达式1的布尔值是True,那么整个运算结果为表达式1的值
如果表达式1的布尔值是False,那么整个运算结果为表达式2的值
print(7 and 8)# 8
print(7 or 8)# 7
数据的布尔值怎么确定? 所有为0与空的布尔值为False(0,0.0,【】,{},(),None),其余都为True。
print(not 7) # False
2.3.5 短路操作
表达式1 and 表达式2 - 如果表达式1的布尔值为False,表达式2不会在执行。
表达式1 or 表达式2 - 如果表达式1的布尔值为True,表达式2不会在执行。
'''
False and name >= 10
True and name>=10 (程序运行时会出错)
'''
2.4 赋值运算符:=,+=,-=,*=,/=,%=,**=,//=
所有的赋值运算符最终的目的都是为了给变量赋值,所以赋值运算符左边必须是变量。
2.4.1 =
变量 = 数据 - 将右边的数据赋给左边的变量。
2.4.2 复合的赋值运算符
变量 += 数据 - (变量=变量+数据)将变量中的数据取出来与指定的数据相加求和,然后将这个和重新赋值给变量。
注意:复合的赋值运算符的左边必须是已经赋值过的变量。
num = 2
num +=10
print(num)
2.5运算符的优先级
数学>比较>逻辑>赋值
数学优先级:** > *,/,%,// > +,-
有括号先算括号里面的
and的优先级比or高
print(7 or 8 and 9) # 先算or:9,先算and:7