语法: if 条件语句:
代码块或表达式
用法:
# a、常量
print("start~~~~")
if 35:
print("True")
print("end~~~~")
# b、变量
num = "abc"
if num:
print("True")
'''
总结:
1. 单分支的特点:要么执行,要么不执行。
2. 只适用于一种情况的判断。
'''
语法: if 条件语句:
代码块或表达式
else 条件语句:
代码块或表达式
用法:
# 网吧上网问题:小于18岁的未成年不得上网,满足条件可以充值。
age = 16
if age < 18:
print("未成年不得进入网吧上网")
else:
print("欢迎光临,请充值")
"""
总结:
1. 双分支的特点:可以实现二选一的操作,只执行两种方式中的一种。
2. 能实现两种情况的判断。
"""
语法: if 条件语句:
代码块或表达式
elif 条件语句:
代码块或表达式
elif 条件语句:
代码块或表达式
.....
else 条件语句:
代码块或表达式
其中else 关键字后边条件语句可跟可不跟,但代码块必须得有。
用法:
# 输入表示星期的数字,判断当日是星期几。
day = input("请输入表示星期的数字:")
if day == '1':
print('Mon')
elif day == '2':
print("Tues")
elif day == '3':
print("Wed")
elif day == '4':
print("Thur")
elif day == '5':
print("Fri")
elif day == '6':
print("Sat")
elif day == '7':
print("Sun")
else:
print("输入有误,请重新输入")
'''
总结:
1. 多分支结构的特点:可以实现多选一的操作,只执行其中一条选择代码语句。
2. 可以适用于3种及3种以上的条件判断。
'''
导入随机数模块 random,通常导入模块方法有:
- import random
- from random import 方法:
# 方法:
# a、random.randint(0,100):导入0~100之中的随机数,闭区间[0,100]
'''
模拟彩票中奖:
1. 让程序产生一个随机数[0~100]
2. 让用户输入一个0~100之间的数
3. 比较:相等即为中奖。
'''
import random
random_num = random.randint(0,100)
print(f"产生的随机数是:{random_num}")
input_num = int(input("请输入一个0~100之间的数:"))
if input_num == random_num:
print("恭喜你,中大奖了")
else:
print("谢谢参与")
# b、random.choice(容器):可以控制步长,得到奇数或者偶数。
import random
random_num = random.choice(range(101))
print(f"产生的随机数是:{random_num}")
input_num = int(input("请输入一个0~100之间的数:"))
if input_num == random_num:
print("恭喜你,中大奖了")
else:
print("谢谢参与")
'''
总结:注意这两者的区别
1. random.randint(start,end): 取得是闭区间的值,步长不可改变。[start,end]
2. random.choice(容器):后边接的是容器,可以是range容器、或者是字符串、列表、元组等可迭代对象,步长可变。
'''
- 嵌套分支可以单分支、双分支、多分支里的任意两种或者多种的组合。
- 嵌套分支通常是用来解决互相关联的选择性问题。
- 为了代码的可读性,嵌套层数一般最好不要超过4层。
- 嵌套分支里边,注意缩进问题。indent
# 1.判断一个年份是否是闰年
year = input("请输入一个年份:")
# 字符串.isdigit():判断字符串非空且全部由数字组成,结果为True。
if year.isdigit():
year = int(year)
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
print(f"{year}是闰年")
else:
print(f"{year}是平年")
else:
print("输出有误")
# 2. 从控制台输入一个五位数,判断是不是回文数。
'''
回文数的特点:
1.形如12321、12221、13531,头尾相等。
2.最少是三位数。
'''
five_num = input("请输入一个五位数:")
if five_num.isdigit() and len(five_num) == 5:
if five_num[0] == five_num[4] and five_num[1] == five_num[3]:
print(f"{num}是一个回文数")
else:
print(f"{num}不是一个回文数")
else:
print("格式错误,请重新输入")
语法: 变量 = 结果1 if 条件语句 else 结果2
用法:
# 判断用户是否成年
# 方案一:双分支写法
age = int(input("请输入你的年龄:"))
if age < 18:
print("未成年")
else:
print("成年")
# 方案二:三目运算符简化写法
age = int(input("请输入你的年龄:"))
result = "未成年" if age < 18 else "成年"
print(result)
# 制作一个简单的登录系统
userName = input('请输入你的用户名:')
pwd = input('请输入你的登录密码:')
if userName == 'admin' and pwd == '123456':
print(用户登录成功)
else:
print(账户或密码输入有误,请重新输入)
# 给学生成绩划分ABCDE等级
score = int(input('请输入你的成绩:'))
if score >= 90:
print('A')
elif 80 <= score <90:
print('B')
elif 70<= score <80:
print('C')
elif 60 <= score <70:
print('D')
else:
print('E')
# 判断一个数是不是偶数,然后再判断能不能被10整除
number1 = int(input('请输入一个数字:'))
if number1 % 2 == 0:
print(f'{number1}是一个偶数')
if number1 % 10 == 0:
print(f'{number1}能够被10整除')
else:
print(f'{number1}不能够被10整除')
else:
print(f'{number1}是一个奇数')
'''
判断一个年份是不是闰年的条件:
1. 年份能够被400整除的是闰年,否则是平年。
2. 年份能够被4整除,并且不能被100整除的是闰年,否则是平年。
'''
# a、双分支分支结构实现
year= 2022
if year % 400 == 0 or(year % 4 == 0 and year % 100 != 0):
print(f'{year}是闰年')
else:
print(f'{year}是平年')
# b、三目运算符结构实现
year = 2022
result ='闰年' if year % 400 == 0 or(year % 4 == 0 and year % 100 != 0) else '平年'
print(result)
语法: for 变量 in 容器:
代码块或表达式
用法:
# 计算1~100的和
total = 0
for i in range(1,101):
total += i
print(total) # 5050
# 容器型数据结构的遍历
# a、字符串
str1 = 'abcde'
for i in str1:
print(i) # a b c d e
# b、列表
list1 = [23,4,5]
for i in list1:
print(i) # 23 4 5
# c、元组
tuple1 = (1,2,3,4,5)
for i in tuple1:
print(i) # 1 2 3 4 5
那么你有没有注意到此时print语句是和for 关键字在同一缩进级别呢,print 放到缩进里边去试一试有什么不同?
# print在缩进里边,连续打印多个值
sum = 0
for i in range(0,4):
sum += i
print(sum) # 0 1 3 6
# print在缩进外边,只打印最后一个值
sum = 0
for i in range(0,4):
sum += i
print(sum) # 6
'''
总结:使用for - in 循环需要注意的几点问题。
1. 常用来解决重复繁琐的问题,只适合循环次数已经确定的问题。
2. for循环语句后边的冒号不可遗失,切要注意中英文下的符号。
3. 注意缩进格式:
- 如果需要连续打印值,print就在缩进里边。
- 只打印一次值,那么放在缩进外边就好。
'''
# range()容器是左闭右开区间[)。
# M是范围的起点,N是范围的终点,step是步长,默认值为1,可以不写。
range(M,N,step)
range(1,11) # 获取1-10十个元素。
range(1,11,3) # 获取1、4、7、10四个元素
range(10) # 获取0-9十个元素
range(12,4) # 获取不到元素
range(0,10,-1) # 获取不到元素
range(11,1,-1) # 从11取到2,一共10个元素
for i in range(1,11):
print(i)
for i in range(1,11,3):
print(i)
for i in range(10):
print(i)
for i in range(11,1,-1):
print(i)
语法: while 条件:
代码块或表达式
用法:
# 计算1~100的和
total = 0
i = 1
while i <= 100:
total += i
i += 1
print(total) # 5050
'''
总结:
1. while循环既适合循环次数确定的循环问题,又适合循环次数不确定的循环问题。
2. while使用前变量的值需要初始化,否则将会报错:变量未定义。
3. 注意缩进问题,否则死循环。
4. 通常使用while循环,常和break语句搭配使用。
'''
用法:
# break
for i in range(1, 11):
if i % 5 == 0:
print('*****')
break
print('-----')
else:
print(i) # 1 2 3 4 *****
# continue
for i in range(1, 11):
if i % 5 == 0:
print('*****')
continue
print('-----')
else:
print(i) # 1 2 3 4 ***** 6 7 8 9 *****
两种循环终止语句的特点和区别:
- break: 打断,表示结束当前循环【break书写在哪一个循环中,就结束哪个循环,就近原则。】
- continue: 继续,表示结束当前循环的本次循环,继续下一次循环。
for循环正常结束之后(即条件都不满足时),else语句被触发;
如果for循环非正常结束(被break或者是continue结束后),else语句不会被触发。
语法: for 变量 in 容器:
代码块或表达式
else:
代码块或表达式
用法:
# 找出100以内所有的素数
'''
素数:
1. 只有1和本身两个因子的整数叫做素数。
2. 2是最小的素数。
'''
for i in range(2,101):
if i == 2:
print("2是素数")
else:
for j in range(2,i):
if i % j == 0:
print(f"{i}不是素数")
break
else:
print(f"{i}是素数")
# 打印出100以内所有是2的倍数的数字的和
sum = 0
for i in range(2, 101, 2):
sum += i
print(sum)
# 方案二:while循环解决问题
i = 0
sum = 0
while i <= 100:
if i % 2 == 0:
sum += i
i += 1
print(sum)
# 打印出1*2*3* ......*100的和
i = 1
total = 1
while i <100:
total *= i
i += 1
print(total)
# 方案二:
total = 1
for i in range(1,101):
total *= i
print(total)
# 判断位数未知,使用while循环。
random_integer = int(input("请输入任意一个正整数:"))
count = 0 # 统计输入数的位数
while True:
random_integer //= 10 # 将原数从十位开始计数
count += 1
if random_integer == 0: # 个位除尽,结束程序。
break
print(f"random_integer是:{count}位数")
# 方案一
for i in range(100,1000):
bw = i // 100
sw = i // 10 % 10
gw = i % 10
if i == (bw ** 3 + sw ** 3 + gw ** 3):
print(f"水仙花数是:{i}")
# 方案二
i = 100
while i <= 1000:
bw = i // 100
sw = i // 10 % 10
gw = i % 10
if i == (bw ** 3 + sw ** 3 + gw ** 3):
print(f"水仙花数是:{i}")
i += 1
# 重复打印5行星星
j = 0 # j 表示行号
while j <= 4:
i = 0 # 一行星星的打印
while i <= j:
print('*',end='') # 一行内的星星不能换行,取消print默认结束符\n。
i += 1
print() # 每行结束要换行,end结束符默认换行。
j += 1
9x9乘法表的的实现过程,我认为是最能体现Python中嵌套分支的题目了,没有之一。
代码如下:
# a,使用for循环打印正三角9 * 9乘法口诀表
# 外层循环代表行
for i in range(1, 10):
# 内层循环代表列
for j in range(1, i+1):
# \n换行;\t表示制表符tab。
# \t能将字符串的长度变整齐,能将字符串的长度变为4的倍数。
print(f'{i} * {j} = {i * j}', end = '\t')
print()
# b,使用while循环打印 9*9乘法口诀表
i = 1
while i <= 9:
j = 1
while j <= i:
print(f'{i} * {j} = {i * j}', end = '\t')
j +=1
print()
i +=1
# c,使用While - for 循环套用
i = 1
while i <= 9:
for j in range(1, i + 1):
print(f'{i} * {j} = {i * j}', end = '\t')
i +=1
print()
# d,使用for - while 循环打印乘法表
for i in range(1, 10):
j = 0
while j < i:
j +=1
print(f'{i} * {j} = {i * j}', end = '\t')
print()