day3 变量、运算符、分支结构

1.8 变量

建议:如果在程序中需要使用一个数据,先用变量将数据存起来,再通过使用变量来使用这个数据
1.定义变量(定义 - 创建) - 将数据保存在变量中

"""
语法:
变量名 = 数据

说明:
1)变量名 - 由程序员自己命名,但是必须满足两个要求和3个规范:
           2个要求:是标识符;不是关键字
           3个规范:见名知意(让别人看到变量名就大概知道这个变量中保存的是什么数据);
                   字母都小写,多个单词用下划线隔开;
                   不使用系统的函数名、类名和模块名
2)=  -  赋值符号
3)数据 - 需要保存的对象;提供数据的方式:具体的数据、已经赋值的变量、运算表达式、函数调用表达式
"""

2.使用变量
使用变量就是在使用变量中保存的数据

m=100
print(m)

3.重新赋值

a = 10 #创建变量a
a = 100 #重新给a赋值为100
a = 'abc' #重新赋值一个其它类型的数据
print(a) #abc

4.同时定义多个变量

(1)同时定义多个变量赋相同的值:变量1,变量2…=数据1,数据2…

x = y = z = 100
print(x,y,z) #100 100 100

(2)同时定义多个变量赋不同的值:变量1,变量2…=数据1,数据2…

注意:=后面数据的个数必须和前面变量的个数保持一致

m , n = 10 , 20
print(m,n) #10,20
#练习:交换两个变量的值
a=100
b=200
#方法一:
c = a
a = b
b = c
print(a,b) #200 100
#方法二:
a,b = b,a
print(a,b) #200 100

5.变量保存数据的底层逻辑

定义变量的时候会自动再内存中申请空间保存数据
原理:定义变量的是会自动申请内存,内存的大小有数据的大小决定;重新给变量赋值,会重新根据新的数据申请新的内存
问题1:为什么python定义变量不用说明类型
问题2:为什么python给变量重新赋值的时候可以赋值不同类型的数据
问题3:为什么python可以直接计算并且保存9999**9999的计算结果

6.版本解释

"""
A.B.C
C -->修复以前的版本的bug
B -->功能增加、修改
A -->不考虑兼容以前的版本修改
"""
'''
补充:内存单位
位(bit)
1字节(byte)=8位
1kb=1024字节
1Mb=1024kb
1Tb=1024Mb
'''

1.9 运算符

1.9.1 数学运算符

数学运算符:+(加)、-(减)、*(乘)、/(除)、%(取余、取模)、//(整除)

1.+(加)、-(减)、*(乘)、/(除) — 跟数学一样

print(2 + 3)
print(2 - 3)
print(2 * 3)
print(2 / 3)

2.//(整除)

x // y — 求x除以y的商,商向小取整(找和小数相邻的两个整数中较小的那个数)

print(7 // 2) #3
print(-7 // 2) #-3

应用1:能够整除的情况下商是整数

print(4 / 2) #2.0
print(4//2) #2

应用2:去掉(砍掉)一个整数的低位数,保留高位数

num = 2342
print(num // 10) #234
print(num // 100) #23

3.% — 取余、取模

x % y — 求x除以y的余数

print(25 % 3) #1

应用1:判断两个数字之间的整除关系 - 判断余数是否为0

print(71 % 2) #1

应用2:去掉高位数,保留低位数

num = 234 
print(num % 10) #4
print(num % 100) #34
# 练习:获取任意一个正整数的十位数
num=8271
# 方法1:
print(num // 10 % 10)
# 方法2:
print(num % 100 // 10)

4.**幂运算

print(2**6)
print(6**0.5)

# 注意:/的结果一定是浮点数;其他运算符的运算结果的类型和运算对象有关
print(10+3.0)
print(2.5*5)

1.9.2 比较运算符

# 比较运算符:>、<、==(等于)、!=(不等于)、>=、<=
# 注意:所有比较运算符的运算结果都是布尔值
print(10 >= 60)

num=89
# 判断这个数对2取余是否为0
print('是否是偶数:',num % 2 ==0)

# 注意2:python的比较运算符直接连写表示范围
x = 2
print('x是否在0-1之间:',0<=x<=1)

1.9.3 逻辑运算符

逻辑运算符:and(逻辑与运算)、or(逻辑或运算)、not(逻辑非运算)
单一条件:如果下雨;如果温度高于35度
复合条件:并且(要求多个条件同时成立),或者(要求多个条件只要有一个条件成立就行)

1.and - 逻辑与运算

应用场景:如果需要多个条件同时满足,就用and连接,相当于生活中的“并且”
运算规则:条件1 and 条件2 - 如果两个条件成立结果是True,只要由一个不成立结果就是False

"""
True and True - True
False and True - False
True and False - False
False and False - False
"""
# 练习1:写条件判断num是否大于10的偶数
num = 34
# 分析条件的类型:看是单一条件还是复合条件
# 所有的条件:大于10(num>10),是偶数(num%2==0)
# 分析连接方式
print('num是否是大于10的偶数:',num > 10 and num % 2 ==0)

# 练习2:写条件判断num是否能同时被3和7整除
num=34
print('num是否能同时被3和7整除:',num % 21 ==0)

2.or - 逻辑或预算

应用场景:如果要求多个条件中有一个条件成立就行,就用or连接;相当于生活中的或者
运算规则:条件1 or 条件2 - 如果两个条件都不成立结果就是False,只要有一个条件成立的结果就是True

"""
True or True - True
False or True - True
True or False - True
False or False - False
"""
# 练习:判断num是否能被3或者5整除
num=23
print('num能否被3或者5整除',num % 3 == 0 or num % 5 == 0)

# 练习:判断year是否是闰年
"""
闰年分为世纪闰年和普通闰年两种
世纪闰年:能被400整除的年
普通闰年:能被4整除,但不能被100整除
"""
year = 2000
print('year是否是闰年:',(year % 4 ==0 and year % 100 != 0)  or (year % 400 == 0))

3.not - 逻辑非运算

应用场景:对指定的条件进行否定(如果一个条件正向写情况很多很复杂,反向写却很简单,就可以将条件反向写再加not)
运算规则:not条件

"""
not True - False
not False - True
"""
# 练习:判断num是否不能同时被3和7整除
num = 23
print('num是否不能同时被3和7整除:',not num % 21 == 0)
num = 23
print('num是否不能同时被3和7整除:',num % 21 != 0)

1.9.4 赋值运算符

赋值运算符:=、+=、-=、*=、/=、%=、//=、**=

注意:所有赋值运算符都是用来给变量赋值的,所以赋值运算表达式没有结果,不能提供数据

1.=

变量 = 数据 ---- 将数据保存到变量中,变量既可以是已经定义过的变量,也可以是没有定义过的变量

2.复合运算符
变量 += 数据 - 先将变量中的数据取出来,然后和后面的数据进行加法运算,然后将计算的结果再赋值给变量(变量必须是已经被定义过的变量,并且里面保存的数据,可以和后面的数据进行加法运算)

a = 20
a += 40
print(a) #60

a = 30
a *= 999
print(a) #29970

# 所有的赋值数据都是没有结果的,无法提供数据
# print(a+=10) #invalid syntax

1.9.5 运算符的优先级

如果一个表达式里面有多种运算符,谁的优先级高就算谁。
1.数学运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符(最低的)
2.不同的数学运算符的优先级数学一样。(**>*、/、%、//、>、+、-)
3.有括号先算括号里面的 - ()

二 分支和循环

2.1 分支结构

1.程序执行过程:
默认情况下程序从上往下一条一条的执行,每一条语句都会执行,并且只会执行一次。

2.分支结构(if) - 让程序根据条件执行代码

(1)if单分支结构 - 如果xx就xx(满足条件执行某个操作,条件不满足的时候这个操作不执行)

"""
语法:
if 条件语句:
    代码段

说明:
1)if       -   关键字;固定写法
2)条件语句   -   可以是任何有结果的表达式(比如:具体的数据、运算表达式、已经定义过的变量,只要赋值语句不行);
                一般将布尔的表达式作为条件
3):         -   固定写法(注意输入法问题)
4)代码段     -   结构上,就是和if保持一个缩进或者多条语句(至少一条!!!);
                 逻辑上,就是满足条件才会执行代码

执行过程:先判断条件是否成立(如果条件语句的结果不是布尔值,就转换成布尔值看是否是True),如果成立就执行代码段;条件不成立,代码段就不执行。
"""
num=231
if num%2:
    print('===') #没有结果

num=230
if num%2:
    print('===') #===

(2)if双分支结构 - 如果xxx就xxx,否则就xxx(条件成立执行某个操作,不成立就执行另外一个操作)

"""
语法:
if 条件语句:
    代码段1(满足条件执行的代码)
else:
    代码段2(不满足条件执行的代码)
"""
# 练习1:根据age的值打印成年或者未成年
age = 29
if age >= 18:
    print('age成年')
else:
    print('age未成年')

# 练习2:根据year的值打印'闰年'或者'平年'
year = 2004
if (year % 4 == 0 and year % 100 != 0) or (year % 400 ==0):
    print('year是闰年')
else:
    print('year是平年')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值