Python基础(二): 分支循环和Pass语句

注意: 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("您输入的数字小了, 应该大一点")
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,204评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,091评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,548评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,657评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,689评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,554评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,302评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,216评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,661评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,851评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,977评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,697评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,306评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,898评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,019评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,138评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,927评论 2 355