文章目录
- if-else语句
- 代码演示:
- if-elif-else语句
- 代码演示1:
- 代码演示2:
- while 循环语句
- 循环语句练习
- 1.求100以内所有的奇数之和
- 2.求100以内所有7的倍数之和,以及个数
- 3.求1000内的水仙花数
- 4.获取用户输入的任意数,判断是否是质数。
- 5. 打印100以内的质数
- 6. 打印99乘法表
if-else语句
# 语法:
# if 条件表达式:
# 代码块
# else :
# 代码块
# 执行流程:
# if-else语句在执行时,先对if后的条件表达式进行求值判断
# 如果为True,则执行if后的代码块
# 如果为False,则执行else后的代码块
代码演示:
age = 18
if age > 17:
print('你已经成年了~~~~')
else:
print('你还未成年~~~')
if-elif-else语句
# 语法:
# if 条件表达式:
# 代码块
# elif 条件表达式:
# 代码块
# elif 条件表达式:
# 代码块
# else:
# 代码块
# 执行流程:
# if-elif-else 语句在执行时,会自上而下依次对条件表达式进行求值判断,
# 如果表达式的结果为True,则执行当前代码块,然后语句结束
# 如果表达式的结果为False,则继续向下判断,直到找到True为止
# 如果所有的表达式都是False,则执行else后的代码块
代码演示1:
age = 67
if age < 18:
print('你还未成年')
elif 18 <= age < 30:
print('你已经是成年人了')
elif 30 <= age < 60:
print('你已经中年了')
elif age >= 60:
print('你已经退休了')
代码演示2:
# 判断一个年份是否为闰年
# 如果一个年份可以被4整除不能被100整除,或者能被400整除,这个年份就是闰年
year = int(input('请输入一个任意的年份:'))
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
print(year, '是闰年')
else:
print(year, '不是闰年')
while 循环语句
# 循环语句
# 循环语句可以使指定的代码块重复指定的次数
# 循环语句分成两种,while循环 和 for 循环 (for循环放到后面再说)
# while 循环
# 语法
# while 条件表达式:
# 代码块
# else : #不常用,但是while循环后面确实可以加else
# 代码块
# 执行流程:
# while语句在执行时,会先对while后的条件表达式进行求值判断,
# 如果判断结果为True,则执行循环体(代码块),
# 循环体执行完毕,继续对条件表达式进行求值判断,依次类推,
# 直到判断结果为False,则循环终止,如果循环有对应的else,则执行else后的代码块
# 条件表达式恒为True的循环语句,称为死循环,它会一直运行,慎用。
循环语句练习
1.求100以内所有的奇数之和
# 分析:奇数是单数。奇数指在整数中,不能被2整除的数,奇数的数学表达形式为:2k+1(k为整数)
# 方式一 通过奇数的定义
i = 1
odd_sum = 0 # 定义奇数之和变量
while i <= 100:
if (i % 2) != 0:
odd_sum += i # 累加奇数之和
print(i, end=' ') # 打印奇数
i += 1
print()
print('100以内所有的奇数之和:', odd_sum)
#打印结果:
#1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99
#100以内所有的奇数之和: 2500
# 方式二 通过奇数的数学表达式 ,这种方式效率高
i = 0
flag = True
while flag:
num = 2 * i + 1
if num < 100:
print(num, end=' ')
i += 1
else:
flag = False
print()
print('100以内所有的奇数之和:', odd_sum)
#打印结果:
#1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99
#100以内所有的奇数之和: 2500
2.求100以内所有7的倍数之和,以及个数
# 分析 能够被7整除的数 是7的倍数 例如:7 14 28 .... (虽然0除以7也能整除 但是数学上规定不包括0)
i = 1 #起始值
count = 0 # 定义统计个数的变量
sum = 0 # 定义统计和的变量
while i <= 100:
if (i % 7) == 0:
sum += i
count += 1
print(i, end=' ')
i += 1
print()
print('100以内所有7的倍数之和:', sum)
print('100以内所有7的倍数的个数:', count)
#添加时间戳比较两种方式的执行耗时
from time import *
#方式一 就是上面的那个方法
startTime = time()
i = 1 # 起始值
count = 0 # 定义统计个数的变量
sum = 0 # 定义统计和的变量
while i <= 100: #可以把100换成10000000 效果更明显
if (i % 7) == 0:
sum += i
count += 1
# print(i, end=' ')
i += 1
print()
print('100以内所有7的倍数之和:', sum)
print('100以内所有7的倍数的个数:', count)
endTime = time()
print()
print(f'方式一程序执行耗时:{endTime - startTime}秒')
# 方式二
startTime = time()
i = 1
count = 0 # 定义统计个数的变量
sum = 0 # 定义统计和的变量
flag = True
while flag:
j = 7 * i # j为7的倍数
if j < 100: #可以把100换成10000000 效果更明显
sum += j
count += 1
# print(j, end=' ')
i += 1
else:
flag = False
print()
print('100以内所有7的倍数之和:', sum)
print('100以内所有7的倍数的个数:', count)
endTime = time()
print()
print(f'方式二程序执行耗时:{endTime - startTime}秒')
3.求1000内的水仙花数
水仙花数是指一个 n 位数(n≥3),它的每个位数上的数字的n次幂之和等于它本身
(例如:1**3 + 5 **3 + 3 ** 3 = 153)
i = 100 # 从100开始
while i < 1000:
a = i // 100 # 获取百位上的数
b = i % 100 // 10 # 获取十位上的数 还可以 b = i // 10 % 10 或者 b = (i - a*100) // 10
c = i % 10 # 获取个位上的数
if (a ** 3 + b ** 3 + c ** 3) == i:
print(i, end=' ')
i += 1
#打印结果
#153 370 371 407
4.获取用户输入的任意数,判断是否是质数。
质数也叫自然数是只能被1和它自身整除的自然数,1不是质数也不是合数。
只有大于1的整数才有可能成为质数
i = int(input('请输出任意数:'))
j = 2
flag = True
while j < i:
if i % j == 0: # 例如 如果输出的i=17,那么 i 会被2到16之间的数都整除一遍,看是否有满足此条件的j。
flag = False # 一旦进入代码块中,就表明当前的i不是质数
j += 1
if flag:
print(i, '是质数')
else:
print(i, '不是质数')
#优化后的
i = int(input('请输出任意数:'))
j = 2
flag = True
while j <= i ** 0.5: # 第二处优化 这里为啥改成<=是因为考虑到i为平方根,刚好是整数的情况下。
if i % j == 0: # 例如 如果输出的i=17,那么 i 会被2到16之间的数都整除一遍,看是否有满足此条件的j。
flag = False # 一旦进入代码块中,就表明当前的i不是质数
break # 第一处优化
j += 1
if flag:
print(i, '是质数')
else:
print(i, '不是质数')
两处优化的地方说明:
break:表示 已经确定当前数不是质数了,不需要再循环执行余下的步骤了。
j < i 改为 j <= i ** 0.5
5. 打印100以内的质数
#直接上优化后的
startTime = time()
i = 2
while i < 100: # 当这里的i的范围越大时,优化的效果越明显
j = 2
flag = True
while j <= i ** 0.5: # 优化二
if i % j == 0:
# print(i, '不是质数')
flag = False
break #优化 一
j += 1
if flag:
print(i, '是质数', end='')
# else:
# print(i, '不是质数')
i += 1
endTime = time()
print()
print(f'程序执行耗时:{endTime - startTime}秒')
6. 打印99乘法表
# 1 * 1 =2
# 1 * 2 = 2 2* 2 =4
# 1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
# 1 * n = n 2 * n = 2*n 3 * n = 3*n
# ............
# ............
# ............
# 1 * 9 = 9 2 * 9 = 18 ............. 9 * 9 = 81
# 需要两侧循环 外侧循环 控制 高度 ,内层循环 控制 宽度
i = 1
while i <= 9:
j = 1
while j <= i:
print(j, '*', i, '=', j * i, end='\t')
j += 1
i += 1
print()