注意: Python以缩进来判断代码块
if分支
单分支判断: if
age = 20
if age >= 18:
print("您已经成年")
打印结果: 您已经成年
age = 17
if age >= 18:
print("您已经成年")
没有打印
双分支判断: if else
age = 16
if age >= 18:
print("您已经成年")
else:
print("您没有成年")
打印结果: 您没有成年
age = 20
if age >= 18:
print("您已经成年")
else:
print("您没有成年")
打印结果: 您已经成年
多分支判断: if elif else
num = 50
if num < 10:
print("<10")
elif num < 100:
print("<100")
else:
print(">=100")
打印: <100
循环
while循环
- 格式
while 条件:
循环满足时的执行代码
...
- 示例代码
i = 0
while i < 5:
print("社会我顺哥, 人狠话不多 - %d" % i)
i += 1
打印:
社会我顺哥, 人狠话不多 - 0
社会我顺哥, 人狠话不多 - 1
社会我顺哥, 人狠话不多 - 2
社会我顺哥, 人狠话不多 - 3
社会我顺哥, 人狠话不多 - 4
- while else: while条件不符合时, 走else分支
i = 0
sum = 0
while i < 10:
i += 1
sum += i
else: # 当while的循环条件不符合时, 走else分支
print(sum)
打印: 55
- break: 跳出当前循环, 通过break打断循环时, 不会再走else分支
i = 0
sum = 0
while i < 10:
i += 1
sum += i
if i == 5:
break
else:
print(sum)
print("循环结束")
此时代码中不会在调用else分支
for循环
- 遍历字符串
notice = "社会我顺哥,人狠话不多"
for c in notice:
print(c, end=" ")
打印: 社 会 我 顺 哥 , 人 狠 话 不 多
- 遍历集合
list = ["张三", "李四", "王五", "赵六"]
for name in list:
print(name, end=" ")
打印: 张三 李四 王五 赵六
- for else
- 当for循环执行完毕, 会执行else中代码
- 如果for循环中途被打断, 不会执行else中代码
list = ["张三", "李四", "王五", "赵六"]
for name in list:
print(name, end=" ")
else:
print("循环结束")
打印: 张三 李四 王五 赵六 循环结束
list = ["张三", "李四", "王五", "赵六"]
for name in list:
print(name, end=" ")
break
else:
print("循环结束")
打印: 张三 # for循环被break打断, 不会执行else中代码
- 案例: 反转字符串
notice = "hellow, world"
result = ""
for c in notice:
result = c + result // 拼接在第一位置
print(result) # 打印: dlrow ,wolleh
- 案例: 打印1-100之间的所有偶数
range = range(1, 101)
for num in range:
if num % 2 == 0:
print(num)
break
- 作用: 打断整个循环体, 跳出循环
for i in range(1, 11):
if i == 6:
break
print(i)
打印:
1
2
3
4
5
continue
- 作用: 跳过本次循环, 继续下次循环
for i in range(1, 6):
if i == 3:
continue
print(i)
打印:
1
2
4
5
- 小练习
# 输入两个数, 求两个数的和, 求和后, 重新输入计算
# 计算后, 让用户选择是否继续计算
# 两个数, 只要有一个数大于100, 重新开始输入
while True:
num1 = input("请输入第一个数:\n")
num1 = float(num1)
num2 = input("请输入第二个数:\n")
num2 = float(num2)
if num1 > 100 or num2 > 100:
print("输入的数错误, 请重新开始输入")
continue
print("两个数的和是: ", num1 + num2)
isQ = input("是否退出计算: (q: 表示退出, 其他表示继续)\n")
if isQ == "q":
break
# 循环嵌套分支: 打印1-100之间所有能被3整除的整数
for i in range(1, 101):
if i % 3 == 0:
print(i)
# 循环嵌套: 打印99乘法表
for i in range(1, 10):
for j in range(1, i + 1):
print("%d * %d = %d" % (j, i, i * j), end=" ")
print("\n")
pass语句
- 作用: 在分支, 循环, 函数中, 当我们没有写代码块的实现部分时, 直接运行会报错
age = 10
if age < 18:
# 什么都没写
此时代码运行会直接报错
- 此时, 可以使用pass语句表示此处代码块没有任何内容
age = 10
if age < 18:
pass
此时代码会正常运行
- 循环中使用pass
while True:
pass
for i in range(1, 10):
pass
- 函数中使用pass
def run():
pass
上述代码中, 如果去掉pass, 程序就会报错, pass的作用就是表示这里是空实现, 没有任何代码
循环分支综合案例
- 打印三位数中所有的水仙花数:
# 水仙花数: 一个三位数, 百位数的三次方 + 十位数的三次方 + 个位数的三次方 = 三位数本身
for num in range(100, 1000):
a = num // 100
b = num % 100 // 10
c = num % 10
if a ** 3 + b ** 3 + c ** 3 == num:
print(num)
打印:
153
370
371
407
- 用户输入一个三位数, 判断是否是水仙花数
while True:
num = input("请输入一个三位数, 用来判断是否是水仙花数\n")
num = int(num)
if not (100 <= num <= 999):
print("数字不是三位数, 重新开始")
continue
a = num // 100
b = num % 100 // 10
c = num % 10
if a ** 3 + b ** 3 + c ** 3 == num:
print("%d 是一个水仙花数" % num)
else:
print("%d 不是一个水仙花数" % num)
isQ = input("是否继续输入, (q: 退出, 其他继续)\n")
if isQ == "q":
break
- 固定一个数字, 然后让用户猜
- 如果相等, 退出程序
- 如果大了, 提示输入数字大了
- 如果小了, 提示输入数字小了
- 只要不相等, 就一直让用户输入
num = 384
while True:
result = input("请输入您认为的给定数值:\n")
result = float(result)
if num == result:
print("猜对了")
break
elif result > num:
print("您输入的数字大了, 应该小一点")
else:
print("您输入的数字小了, 应该大一点")