美文网首页
Python基础(二): 分支循环和Pass语句

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

作者: 伯wen | 来源:发表于2017-12-09 15:16 被阅读18次

    注意: 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("您输入的数字小了, 应该大一点")
    

    相关文章

      网友评论

          本文标题:Python基础(二): 分支循环和Pass语句

          本文链接:https://www.haomeiwen.com/subject/gcsuixtx.html