本节内容:条件判断语句、循环语句,以及对应的练习:质数问题、斐波那契数列、百马百担、珠峰问题。
python中的条件判断语句:if / if … else / if … elif…elif…else
age = int(input('请输入您的年龄:'))
if age < 18:
print('未满十八岁,禁止入内') # 条件成立时执行的代码
else:
print('欢迎') # 条件不成立时,执行的代码
案例1:判断一个数是否能被4 和 6 同时整除,并且打印对应的结果
num = int(input('请输入数字'))
if num % 4 ==0 and num % 6 ==0:
print(num,'能被4和6同时整除')
else:
print(num,'不能被4或6同时整除')
案例2:判断一个年份是否是闰年(能被4整除,但是不能被100整除)
year = int(input('please enter the year:'))
if year % 4 == 0 and year % 100 != 0:
print(year,'是闰年')
else:
print(year,'不是闰年')
# --> please enter the year:2019
# --> 2019 不是闰年
# --> please enter the year:2020
# --> 2020 是闰年
案例3:将3718秒按照XX小时XX分钟XX秒的形式输出
x = 3718
hour = x // 3600 #一个小时3600秒
minute = x % 3600 // 60 # 小鼠剩下的秒数除以60得到分钟
second = x % 60 #不能被60除尽的部分为秒数
print(hour,'小时',minute,'分钟',second,'秒')
# -->1 小时 1 分钟 58 秒
案例4:输入身高体重,判断身材是否正常【多个变量计算结果判断】
公式:体重(KG)/ 身高(m) 的平方值,在18.5-24.9之间属于正常
weight = float(input('请输入您的体重(kg)'))
height = float(input('请输入您的身高(m)'))
BMI = weight / height **2
if 18.5 <= BMI <= 24.9:
print('您的身材正常')
else:
print('您的身材不正常')
# 请输入您的体重(kg)56
# 请输入您的身高(m)1.65
# 您的身材正常
案例5:判断成绩水平【if…elif… elif… else…】
score = float(input('请输入你的成绩'))
if score>=80:
print('优秀')
elif score >= 70:
print('良好')
elif score >= 60:
print('及格')
else:
print('不及格')
# 请输入你的成绩78
# 良好
案例6:买票成功可以进站,安检通过可以进入候车室【if语句嵌套】
ticket = input('是否买票 Y/N')
if ticket == 'Y': # 先进行买票判断
print('已经买票,可以进站')
safe = input('是否通过安检 Y/N') #再进行安检判断
if safe == 'Y':
print('买票成功,安检通过,请进入候车室')
else:
print('安检不通过,不得进入候车室')
else:
print('请先买票')
# 是否买票 Y/NY
# 已经买票,可以进站
# 是否通过安检 Y/NN
# 安检不通过,不得进入候车室
案例7:通过三元表达式简写if语句【三元表达式】
num1 = int(input('请输入一个数字:'))
num2 = int(input('请再次输入一个数字:'))
x = num1 if num1 > num 2 else num2 #三元表达式
print('两个数里面较大的是', x)
while 条件成立:
输出结果
案例1:打印5遍 ‘hello’
x = 0
while x <5:
print('hello')
x +=1
# hello
# hello
# hello
# hello
# hello
案例2:求1-100的和
x = 0
sum = 0 #定义一个变量来保存所有数字之和
while x < 100:
x +=1
sum = sum + x
print(sum)
# 5050
案例3:求1-100所有偶数的和
x = 0
sum = 0
while x < 100:
x +=1 #第一个数字是0,此处加1,再进行判断
if x % 2 ==0: #偶数才被添加到结果中
sum = sum + x
print(sum)
# 2550
for 临时变量 in 列表或字符串等可迭代对象:#注意,in后面一定要为可迭代对象
满足条件时执行的代码
#注意,in后面一定要为可迭代对象
目前接触的可迭代对象:字符串,列表,字典,元组,集合,range
for s in 'hello':
print(s,end =' * ')
# h * e * l * l * o *
result = 0
for i in range(1,101): #计算1-100的和
result += i
print(result)
# 5050
break - 用来结束整个循环
continue - 用来结束本轮循环,开启下一次循环
i = 0
while i <5:
if i == 3: #当i=3的时候,自动加1,同时跳出当前循环进入下一次循环,所以输出的结果中没有3
i +=1
continue
print(i,end = ' ')
i +=1
# 结果为: 0 1 2 4
i = 0
while i <5:
if i == 3:
i +=1
break # 当i=3的时候,结束循环,不在进行后续循环,所以不会输出3和4
print(i,end = ' ')
i +=1
# 结果为: 0 1 2
案例: 不断的让用户输入用户名和密码,只要用户名不是zhangsan,密码不是123123,就一直询问
username = input('请输入用户名:')
password = input('请输入密码:')
while True:
username = input('请输入用户名:')
password = input('请输入密码:')
if username == 'zhangsan' and password == '123123':
break
案例:打印九九乘法表
# 打印5个 *, 并且空格隔开
i = 0
while i < 5:
i +=1
print('*',end=' ')
# * * * * *
# 打印一个三角形
i = 0
while i < 5:
i +=1
print('*'*i)
# *
# **
# ***
# ****
# *****
#打印乘法表
j = 0
while j<9: #外循环用来控制行数
j +=1
i = 0
while i < j: #内循环用来控制列数
i +=1
print(i,"*",j,"=",i*j, end = ' ') #最终输出结果
print() #用来换行
score = float(input('请输入你的成绩'))
if score >= 60:
print("恭喜你,及格了")
else:
print("不好意思,没有及格")
age = int(input('请输入你的年龄'))
if 0<=age<=18:
print("恭喜你,未成年")
elif 18< age <=150:
print("恭喜你,成年了")
else:
print("不是人")
num1 = int(input('请输入一个整数:'))
num2 = int(input('请再输入一个整数:'))
gap = num1 - num2
if gap % 2 ==1:
print(gap)
else:
print("结果不是奇数")
4.使用for循环输出0-100内所有的奇数
for i in range(0,100):
i +=1
if i % 2 != 0:
print(i)
for i in range(0,100):
i +=1
if i % 2 == 0:
continue # 当 i是偶数的时候跳出循环
print(i)
j = 0
while j <= 100:
if j % 2 ==0:
print(j)
j +=1
# 查看有哪些数字满足要求
for i in range(0,101):
if i % 10 ==2 and i % 3 ==0:
print(i,end=' ')
# 12 42 72
# 引入变量统计个数
count = 0
for i in range(0,101):
if i % 10 ==2 and i % 3 ==0:
count += 1
print('满足条件的数字的个数是',count,'个')
# 满足条件的数字的个数是 3 个
num = int(input('请输入一个正整数'))
count = 0
while True:
count +=1
num //= 10 #每次除以10,计算到0需要除几次
if num == 0:
break #当最后商为0的时候,停止循环
print('您输入的数字是',count,"位数")
# 请输入一个正整数836453
# 您输入的数字是 6 位数
for i in range(100,1000):
ge = i % 10
shi = i // 10 % 10
bai = i // 100
if ge **3 + shi **3 + bai **3 ==i:
print(i)
# 153 370 371 407
while True:
content = input("请输入内容")
if content =='exit':
print('程序结束')
break
count = 0
for i in range(100,150):
for j in range(2,int(i**0.5)+1):
if i % j ==0: # 2到i-1之间的某一个数值是i的约数,跳出循环
break # break放在内循环中,用来结束内循环
else: #for else 语句:当循环里的break没有被执行的时候,就会执行slse
print(i,end=' ')
count +=1
print('素数的个数是',count)
# 101 103 107 109 113 127 131 137 139 149 素数的个数是 10
拓展:用假设成立法求质数
count = 0
for i in range(100,150):
flag = True #每次都假设i是一个质数
for j in range(2,int(i ** 0.5)+1):
if i % j ==0:
flag = False #除尽了,说明 i是一个合数,对应将flag调整为False
break #跳出循环
if flag: #默认 if flag = True
print(i, '是质数') # 如果flag没有发生变化,则i确认为一个质数
count += 1
print('一共有',count,'个质数')
拓展:使用计数方法求质数
for i in range(100,150):
count = 0
for j in range (2, int(i **0.5)+1):
if i % j ==0:
count +=1 #如果有约数,就统计约数的个数
if count ==0: #如果约数的个数大于0,则表示不仅仅能被1和本身整除,否则为质数
print(i,'是一个质数')
n = int(input('请输入你要查看第几个斐波那契数'))
num1 = 1
num2 = 1
for i in range(0,n-2):
a = num1
num1 = num2
num2 = a + num2
print(num2)
输出前n+2位数的数列
n = int(input('请输入你要查看第几个斐波那契数'))
num1 = 1
num2 = 1
print(num1, end= ' ')
print(num2, end= ' ')
for i in range(0,n-2):
a = num1
num1 = num2
num2 = a + num2
print(num2, end =' ')
#--> 请输入你要查看第几个斐波那契数10
#--> 1 1 2 3 5 8 13 21 34 55
#假设大马有x个,中马有y个,小马为100-x-y
for x in range(0,100 // 3 + 1):
for y in range(0,100 // 2 + 1):
if 3*x + 2*y+(100-x-y)*0.5 ==100:
print('大马:',x,'中马:',y,'小马:',100-x-y)
大马: 2 中马: 30 小马: 68
大马: 5 中马: 25 小马: 70
大马: 8 中马: 20 小马: 72
大马: 11 中马: 15 小马: 74
大马: 14 中马: 10 小马: 76
大马: 17 中马: 5 小马: 78
大马: 20 中马: 0 小马: 80
height = 0.08 / 1000
count =0
while True:
height *= 2
count += 1
if height > 8848.13:
break
print(count)
#--> 27