作业:
1.写出判断一个数是否能同时被3和7整除的条件语句, 并且打印对应的结果。
num = eval(input('请输入需要判断的数字:'))
if num % 3 == 0 and num % 7 == 0:
print("%d能被3和7同时整除" % num)
else:
print('%d不能同时被3和7整除' % num)
2.写出判断一个数是否能够被3或者7整除,但是不能同时被3或者7整除, 并且打印对应的结果.
num1 = eval(input('请输入需要判断的数字:'))
if num1 % 3 == 0 or num % 7 == 0:
if num1 % 21 == 0:
print('%d能被3或者7整除而且能同时被3或者7整除' % num1)
else:
print('%d能被3或7整除但是不能同时被3或7整除' % num1)
else:
print('%d不能被3或者7整除也不能被3或7同时整除' % num1)
3.输入年,写代码判断输入的年是否是闰年,如果是输出'闰年',否则输出'不是闰年'
year = eval(input('请输入年份'))
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
print('%d年为闰年' % year)
else:
print('%d年不是闰年' % year)
4.今天上课讲了15000秒的课,编程计算今天上课时间是多少小时,多少分钟,多少秒;以‘XX时XX分XX秒’的方式表示。
tim_s = 15000
tim_h = int(15000 / 3600)
tim_mleft = int(tim_s % 3600)
tim_m=int(tim_mleft/60)
tim_s=0
print('今天上课{}小时,{}分钟,{}秒'.format(tim_h, tim_m, tim_s))
5.定义两个变量保存一个人的身高和体重,编程实现判断这个人的身材是否正常!
公式: 体重(kg)/身高(m)的平方值在18.5 ~ 24.9之间属于正常。
weight=52
high=1.75
if 18.5<= weight/high**2<=24.9:
print('身材正常')
else:
print('身材不正常')
六
1)表达式0x13 & 0x17的值 == (19)
2)表达式0x13 | 0x17的值==(23)
3)表达式0x13 ^ 0x17的值==(4)
4) 若x=12,y=13则x&y的结果是==(12)
5)在位运算中,操作数每右移一位,其结果相当于( )
- 操作数乘以2
- 操作数除以2
- 操作数乘以4
- 操作数乘以4
6).设x 是一个整数(16bit).若要通过x|y使x低度8位置1,高8位不变,则y的二进制数是(0000000011111111)
总结
一、变量
1.什么是变量:声明变量是用来申请空间保存数据的 声明完变量后,使用变量就是使用变量里存储的值。
声明变量的语法:变量名 = 值
说明:变量名是由程序猿自己命名的:
要求:1.是标识符 2.不能是关键字
规范:见名知义;满足PEP8命名规范(所有的字母都小写;多个单词组合的变量名用下划线连接 stu_name)
不能使用系统提供的函数名、类名、库名等来给变量命名,如 True = 100
= -> 赋值符号,将右边的数据赋给左边的变量(verb)
值 ->任何有结果的表达式。例如:数据 已经声明过的变量 运算表达式等
例如下面的变量声明:
b1 = 0b1011
b = 5
b2 = True
b3 = 10 + 2
b4 = 10 + 2 + b3
print(b, b1, b2, b4, sep='\t', end='\n')
2.变量的使用:使用变量就是使用变量里存储的值;变量的值是可以修改的。
age = 50
age = 18
print(age)
3.同时声明多个变量
a.同时声明多个变量赋相同的值 变量名1=变量名2=变量名3=值
b.同时声明多个变量赋不同的值,变量1,变量名2,变量名3 = 值1,值2,值3
c1 = c2 = c3 = 10
print(c1, c2, c3)
x, y = 10, 20
print(x, y)
4.python变量声明的原理
先开辟空间存储数据(存储的数据需要多大的内存,就开辟多少内存空间,然后再将变量和数据对应的内存空间关联在一起)
变量三要素:
a=10
值 - 变量存储的数据(给变量赋值的数据 10 ) -使用变量
类型 - 给变量赋值的数据类型(int)
地址-给变量赋值的数据在内存中的地址,也是变量中真正存储的东西(0xff)
a = 10
print(a, type(a), id(a))
a = 100
print(a, type(a), id(a))
b = a
print(id(b))
输出如下:
10 1677903936
100 1677905376
1677905376
在Python中,用一个变量给另一个变量赋值的时候,是将原来的变量中数据的地址赋值给另外一个变量。
赋值完成后,数据还是只有一个,只是说数据的地址被两个变量所保存。
二、运算符
ython支持的运算符:数学运算符、比较运算符、逻辑运算符、赋值运算,位运算。
1.数学运算符
+ - * / %(取余) //(整除) **(次方)幂运算
a、 + - * /与小学数学中的加减乘除功能一模一样
print(1 + 1,)
print(20 - 10,)
print(20 * 10)
print(5 / 2)
计算结果为:
2 10 200 2.5
b、 % -求余数,也叫取余、取模
print(5 % 2,)
print(10 % 4,)
计算结果为:
1 2
应用1:判断数字的奇偶性:判断这个数对2取余的结果是不是0。
print(20 % 2)
print(23 % 2)
计算结果为:
0 1
应用2:是否整除,判断余数是否为0。
应用3:取低位数,获取一个数的个位数是什么。
num = 123
print(num % 10) # 3
print(num % 100) # 23
c、整除:商只取整数部分。注意! 负数除不尽的时候向下取整
print(5 // 2) # 2
print(3.9 // 3) # 1.0
应用:取高位
print(num // 100)
d、** -幂运算 x**y ->求x的y次方
print(2 ** 3) # 次方
print(8 ** (1 / 2)) # 开平方
result = 2 ** 5
print(result)
计算结果为:
8 2.8284271247461903 32
2.比较运算符
比较运算符 < > = != >= <=
1.< > >= <=和数学中的一样
所有的比较运算符的运算结果都是布尔值(True False)
print(10 > 20) # False
print(10 < 20) # True
2.== 和!= 是判断两个值是否相等和不相等
print(10 == 10) #True
print(10 != 10) #False
3.逻辑运算符 and(逻辑与) or(逻辑或) not(逻辑非),运算对象和运算结果都是布尔值.
a、and
运算规则为:两个都是True,结果才是为True,只要有一个是False,结果就是False
True and True = True
True and False = False
False and True = False
False and False = False 只要有一个False就是False
使用场景:需要多个条件同时满足的时候,就用and,相当于生活中的并且
# 获取奖学金的条件:
GPA = 4.5
score = 90
# 绩点不低于4 且测评分要高于95
if GPA >= 4 and score > 95:
print("可以获得奖学金")
else:
print("不能获得奖学金")
判断一个数是否能够同时被3和7整除
print('同时被三和七整除:', num1 // 7 == 0 and num1 // 3 == 0)
b、or
运算规则:两个都是false结果才是false,只要有一个是True,结果就是True
True or False == True
True or True == True
False or True == True
False or False == False
应用场景:在多个条件中,需要有一个条件满足就行,就使用false,相当于生活中的or
绩点不低于4或者测评分要高于95
print('能否获取奖学金', GPA >= 4 or score >= 95)
c、not
运算规则:True变False False变True
not True -> False
not False -> True
使用场景:对某一个条件进行否定
如:一个数不能同时被三和七整除的条件
print('不能同时被三和七整除', not (num1 % 7 == 0 and num1 % 3 == 0))
d、短路操作
and的短路操作:条件1 and 条件2 ,-> and前面的条件如果结果是False,那么后面的条件语句不会执行,结果直接是False
or的短路操作:条件1 or 条件2 ,or 前面的条件如果结果是True,那么后面的条件语句不会执行,结果直接是True
def func1():
print('函数被执行了')
True and func1() # and 遇到True了才会执行第二个条件
def func2():
print('or的函数被执行了')
False or func2() # 只有第一个条件是False,才会执行第二个条件
True or func2() # 第一个条件是True,整个算式就是True,第二个条件不被执行
4.赋值运算符:= += *= -= /= //= **=
所有的赋值运算符左边必须是变量,组合赋值运算符的左边除了是变量
,这个变量还要求必须是已经声明过的
1):变量 = 数据 -> 将右边的数据赋给左边的变量
a = 10
b = 10 * 2
2):组合的赋值运算符
变量 += 值 —-> 变量=变量+值
bb = 100 # 组合赋值运算符要求一个已经声明的变量
bb += 10 # bb=bb+10
print(bb)
i = 5
i **= 5
print(i)
5.运算顺序
运算符优先级:
数学运算符 > 比较运算符> 逻辑运算符 > 赋值运算符(最低)
数学运算符的优先级和数学一样:*>,/,//,%
如果有括号,先算括号里面的
三.位运算
所有的位运算都是针对数字的补码进行操作的,特点就是快(效率高)
位运算:&(与),|(或),~(取反),^(异或), <<(左移),>>(右移)
1. &
运算规则:补码每一位上的数都是1,结果就是1,如果有一个是0结果就是0
应用:高效的判断数字的奇偶性
所有奇数的补码在计算机中最后一位都是1
所有偶数的补码在计算机中最后一位都是0
方法:让数字和1进行按位与运算.000000001 ,判断结果是0(偶数)还是1(奇数)
假设一个数字的补码是1101
另一个数字的补码是0111
1110 & 0111 == 0110
3的补码:00000011
2的补码:00000010
00000011 & 00000010 =00000010 == 2
奇偶性判断:
print(7 & 1, 9 & 1) # 奇数与1与,结果为1
print(8 & 1, 16 & 1) # 偶数与1与,结果为0
2 . |
运算规则:每一位上的数,如果都是0,则结果都是0,只要有1,结果都是1
1110 | 0111 -> 1111
3.~
运算规则:将每一个位上的0变1,1变成0
1101 -> 0010
print(~ -7) # 11111001(补码) -> 00000110 == 6
4.^
运算规则:每一位上的数,如果是相同的,则为0,不同则为1
11011 ^ 10010 -> 01001
5.<<
数字<
print(2 << 1) # 2*2**1=4
print(3 << 2) # 3*2**2=12
6.>>
数字>>N 数字的补码整体向右移动N位 计算:数字//2**N
print(4 >> 1) # 4//2**1==2
print(-8 >> 2) # -8 // 2**2 == -2
四.分支结构
Python代码默认情况下是从第一行开始从上往下依次执行。除注释以外的每条语句都会执行
分支结构:某段代码是否执行看条件(if)
1.if结构
语法:
if 条件语句:
代码段
其他代码
说明:
if -关键字,为固定写法
条件语句 - 任何有结果的表达式都可以,例如:数据,已经声明过的变量,运算表达式(不能是赋值运算)
: -固定写法;一般有冒号的位置,后面都会换行加缩进
代码段 - 和if保持一个缩进的一条或者多条语句;需要满足条件才执行的代码。
执行过程:
先判断条件语句的结果是否为True(如果条件语句的结果不是布尔值,就先转换成布尔值再看,只要不是0不是空就全是True)
如果为True 就执行代码段 否则不执行
num = 10
if num & 1 == 0:
print('偶数')
2.if-else
满足条件执行某个操作,不满足条件执行另外一个操作
语法:
if 条件语句:
代码段1 满足条件要执行的代码
else:
代码段2 不满足条件要执行的代码
执行过程:
先判断条件一句是否为True,如果为True就执行代码段1,否则执行代码段2
age = 20
# 根据年龄值范围打印成年或者未成年
if age >= 18:
print('成年')
else:
print('未成年')