作业:
1 求1000以内所有的⽔仙花数
2 获取⽤户输⼊的任意数,判断其是否是质数?
求1000以内所有的水仙花数
# 指的是一个3位数 每个位数上的n次幂之和等于它本身
# 例如 1 ** 3 + 5 ** 3 + 3 ** 3 = 153
# 先获取1000以内的所有三位数
i = 100
while i < 1000:
#
# # print(i)
# # 判断i是水仙花数
# # 假设 i的 百位数是a 十位数是b 个位数是c
a = i // 100 # 百位数
b = i // 10 % 10
# b = (i - a * 100) // 10 # 十位数
c = i % 10 取余 # 个位数
# # print(i,a,b,c)
# # 1 ** 3 + 5 ** 3 + 3 ** 3 = 153
if a ** 3 + b ** 3 + c ** 3 == i:
print(i)
#
i += 1
获取用户输入的任意数,判断其是否是质数?
# 什么是质数 只能够被1和它本身整除的数就是质数 2 3 5 7 11 ... 97 1不是质数
num = int(input('请输入任意大于1的数:'))
i = 2
# 判断num是质数或者不是质数
# 定义一个标记 用来记录Num是否是质数 默认是质数
flag = True
while i < num:
if num % i == 0:
# 证明num肯定不是质数
# print(num)
flag = False
i += 1
if flag:
print(num, '是质数')
else:
print(num, '不是质数')
5.4 非布尔值的与或运算
• 当我们对非布尔值进行与或运算时,Python会将其当做布尔值运算,最终会返回原值
• 非布尔值与运算的规则
• 与运算是找False的,如果第一个值是False,则不看第二个值。如果第一个值是False,则直接返回第一个值,否则返回第二个值
• 非布尔值或运算的规则
• 或运算是找True的,如果第一个值是True,则不看第二个值。如果第一个值是True,则直接返回第一个值,否则返回第二个值
逻辑与运算 and
b= false and true #( 与 运算 如果a和b都为真,则结果为真,如果a和b中有一
#( 个条件为假,则结果为假。)
print(b) #返回的是false
b = 0 and 1 #( 与 运算,0 是 false, 1 是 true,与运算返回是假,值他本身
print(b) #返回的是false 就是0
b = 1 and 2 #( 与 运算,1 是 true, 2 是 true,与运算返回的是第二个true,值他本身
print(b) 返回的是2
逻辑或运算 or
b = False or True #或运算同假为假 一真为真,输出的是True
print(b)
b = 2 or 3 #或运算同假为假 一真为真,输出是第一个的值
print(b)
b = 0 or 1 #或运算同假为假 一真为真,输出是第二个的值
print(b)
b = 0 or 0 #或运算同假为假 一真为真,输出是第一个的值
print(b)
print("情人节玩的开心") if True: else(此处True后面的冒号表达的是 if条件控制语句)不能有冒号
print("情人节玩的开心") if True else print(上老师的课很开心) #返回的是第一个值,(情人节玩的开心)(没有冒号就是条件表达式)
a = 200
b = 300
m = a if a > b else b
print(m)
优先级
a = 2 or 3 and 4
当or优先级高的时候,从左到右,返回的是4,当and的优先级高的时候返回的是2
运算符优先级运算表
if+判断+后面跟的是条件表达式
if True : print('hello')
,,,,,,,,,,,,,,
ps:if条件表达式的语法就是,语句执行前先会对他条件表达式进行一次判断,如果为True那么会执行if后面的语句,如果为False那么就不执行后面的语句
实例
num = 60
if num > 20 :print('num比20大')
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
拓展 input()函数
需求,获取用户输入的用户名,如果用户名使python欢迎访问
input()
print(22)
在终端的空白处输入任意字符
则显示print()的内容
username = input()
if username =='python';
print('欢迎光临')
,,,,,,,,,,,,,
实例
value =int(input('你的工资是多少:'))
if value > 2000 :
print('很棒')
else:
print('扎心了')
input()返回的数据类型是str,不能直接和整数进行比较,必须先把str换成整数,使用int()方法
因此,将input变量转换为int型即可。
执行流程为:
先对if后面的条件表达式进行一次求值判断,如果为True则执行后面的print的代码块,如果为Fales则执行else后面的代码块
value =30000
if value >= 30000: #可以后面添加 and 20000:
print('很棒')
elif value >= 20000: #可以后面添加 and 10000
print('厉害')
elif value >= 10000:
print('不错')
else:
print('加油')
#此时输出的是很棒
语法
他会自上向下,的依次对条件表达式进行求值判断,如果表达式的结果为True,则执行当前代码块的逻辑,,如果为false,则执行后面的代码块
value = 30000是初始值(可以自行输入)
if后面跟的是条件表达式,然后print那行是代码块
其次elif后面是条件表达式,接着print那行是代码块,最后
else没有条件表达,直接就是代码块
执行流程:
设定一个初始值value为30000.然后开始执行下面步骤,当我的值符合第一个if后面的条件表达式的时候运行第一个print代码块,然后直接输出在终端上,无需进行后面的步骤。
当我的值不满足第一个if后面的代码块的时候,满足第一个elif后面的条件表达式的时候,运行后面代码块,然后显示结果在终端上。
以此类推,当所有值都不满足的时候,则运行else的代码块,,输出到终端上
只有一个代码块会执行
# 根据指定的月份打印出对应的季节
month = 6
if month == 3 or month == 4 or month == 5:
print('春季')
elif month == 6 or month == 7 or month == 8:
print('夏季')
elif month == 9 or month == 10 or month == 11:
print('秋季')
elif month == 12 or month == 1 or month == 2:
print('冬季')
else:
print('月份不存在')
表达式二
month = 3:
if month >12 or month <1:
print('月份不存在,重新输入')
if 3 <= month <=5:
printh(month,'春季')
elif 6 <= month <=8:
printh(month,'夏季')
elif 9 <= month <=11:
printh(month,'秋季')
else:
print(month,'冬季')
,,,,,,,,,,,,,,,,
例题:我家的狗5岁了,5岁的狗相当于人类的年龄是多大呢?
狗的前两年的每一年相当于人类的10.5岁。然后每一年增加4岁
那么5岁的狗相当于人类的年龄就是 10.5 + 10.5 4 + 4 + 4 = 33
需求:获取用户输入的狗的年龄。然后提示人类的年龄是多大?如果用户输入的是负数提示错误信息
dog_age = float(input('请输入狗的年龄:'))
person_age = 0
if dog_age > 0:
# 如果狗的年龄在两岁以下(包含2岁)
if dog_age <= 2:
person_age = dog_age * 10.5
# 如果狗的年龄在两岁以上
else:
# 先计算前两年的年龄
person_age = 2 * 10.5
# 计算超过两年的年龄
# person_age = person_age + (dog_age - 2) * 4 x = x + 2 等价于 x += 2
person_age += (dog_age - 2) * 4
print(dog_age, '岁的狗,年纪相当于', person_age, '岁的人')
else:
print('输入有问题')
while执行流程
先对whlie后面的条件语句进行求知判断判断,如果为True,执行循环体代码块的逻辑,当循环体执行结束后,继续对条件表达式进行判断,继续为True,则进行执行循环体代码,知道判断结果为Flast时,则循环终止,然后输出后面的else语句,这就是执行流程
print(1)
print(1)
print(1)
while True: # 慎用
print(1)死循环
#1.初始化表达式 通过初始化表达式我们来初始化一个变量
i = 0
#2. 条件表达式 条件表达式用来设置循环执行的条件
while i < 5:
print(i,'hello')
#3. 更新条件表达式 修改初始化表达式的值
i += 1 #i = i + 1
else:
print('else语句')
求1 - 100所有的偶数和
先找到100个数1 - 100
判断 判断哪些是偶数
求和运算
i = 0
# 定义一个变量来保存结果
r = 0
while i < 100:
i += 1
# 判断i是否是偶数
if i % 2 == 0:
r += i # r = r + i
print(r)
求1加到100的值
i = 0
#定义一个变量来保存结果
r = 0
while i < 100:
i += 1
r += i
print(r)
1,非布尔值的与或运算,
首先会吧非布尔值转化为布尔值,然后进行与或运算,
• 非布尔值与运算的规则
运算是找False的,如果第一个值是False,则不看第二个值。如果第一个值是False,则直接返回第一个值,否则返回第二个值
• 非布尔值或运算的规则
• 或运算是找True的,如果第一个值是True,则不看第二个值。如果第一个值是True,则直接返回第一个值,否则返回第二个
2,条件运算符
记住他不是if-else语句
运算符的优先级
看表
条件控制语句
if语句(上面有)
if-else语句
if-elif-else语句(指挥有一个代码块执行
whlie语句(循环语句)
三要素
初始化表达式初始化一个变量
条件表达式的规则
更新条件表达式 修改初始化变量的值