• day5.流程控制及while单项循环


    一、判断类型 isinstance

    1、语法

    """
    语法:
        # 用法一
        isinstance(要判断的值,要判断的类型) 返回True 或者 False
        # 用法二
        isinstance(要判断的值,(可能的类型1,可能的类型2,可能的类型3 ...  ) ) 如果有一个类型满足,返回的是True 否则 返回False
        
    数据类型:
    int float bool complex str list tuple set dict
    """

    1.1、用法一

    res = isinstance(5,int)
    res = isinstance("11223344",str)
    res = isinstance([1,2,3],tuple)
    print(res)

    1.2、用法二

    res = isinstance(16, (str,list,tuple)  )
    print(res)

    二、代码块

    1 以冒号作为开始,用缩进来划分作用域
    2 作用域:作用的区域,作用的范围
    if 10 == 10: # True 执行
        print(1)
        print(2)
        print(3)
    print(4)
    
    if 10 == 11: # False 不执行
        print(11)
        print(22)
        print(33)
    print(44)

    1、代码块的注意点

    """要么全都是一个tab缩进,要么全都是4个空格,不能混合使用"""
    if 10 == 10:
        print(100)
        print(200) # IndentationError
        
        
    # php js .... (了解)
    """
    if(10 == 10){
        print(1)
                    print(2)
                                print(3)
    }
    """
    注意点

    三、流程控制

    流程: 代码执行的过程
    控制: 对代码执行过程的一种把控

     1 三大结构:
     2 1.顺序结构 : 默认代码依次从上到下执行
     3 2.分支结构 : 4种
     4 3.循环结构 : for  while
     5 
     6 分支结构:
     7     (1)单项分支
     8     (2)双项分支
     9     (3)多项分支
    10     (4)巢状分支

    1、单项分支

    语法:

    """
    if 条件表达式:
        code1
        code2
    当条件表达式成立,返回True,执行对应的代码块,反之不执行
    """

    例:

    name = "jack"
    if liucaixia == "jack":
        print("yes")

    2、双向分支

    语法:

    """
    if 条件表达式:
        code1
        code2
    else:
        code3
        code4
    如果条件表达式成立,执行if对应的代码块
    如果条件表达式不成立,执行else对应的代码块
    
    if   代码块也叫做真区间
    else 代码块也叫做假区间
    
    """

    例:

    name = "jack"
    if liucaixia == "jack":
        print("yes")else:
        print("no")

    举例:

     1 按要求写一段代码
     2 """
     3 name = input("请输入姓名")
     4 print(name , type(name))
     5 """
     6 
     7 """
     8 网站登录功能:
     9     提示用户输入对应的用户名和密码
    10     如果用户名admin,密码000
    11     提示用户,登录成功
    12     否则提示,登录失败
    13 """
    username = input("请输入您的用户名:")
    password = input("请输入您的密码:")
    if username == "admin" and password == "000":
        print("登录成功~")
    else:
        print("登录失败~")

    四、多项分支

    语法:

    """
    语法:
    if 条件表达式1:
        code1
        code2
    elif 条件表达式2:
        code1
        code2
    elif 条件表达式3:
        code1
        code2
    else:
        code...
        
    如果条件表达式1成立,返回True,执行对应的代码块,反之则向下执行
    如果条件表达式2成立,返回True,执行对应的代码块,反之则向下执行
    如果条件表达式3成立,返回True,执行对应的代码块,反之则向下执行
    直到最后,任何条件都不满足,执行else这个分支的代码块.
    
    
    elif 可以出现0次或者多次
    else 可以出现0次或者1次
    """

    1、双项分支

    flag = True
    # 双项分支
    if flag == True:
        print("yes")
    else:    
        print("no")

    2、多项分支

    youqian = False
    youfang = False
    youche = False
    youyanzhi = False
    youtili = False
    
    if youqian == True:
        print("我娶你1")
    elif youfang == True:
        print("我娶你2")
    elif youche == True:
        print("我娶你3")
    elif youyanzhi == True:
        print("我娶你4")
    elif youtili == True:
        print("我娶你5")
        
    else:
        print("你是个好人")

    3、巢状分支(单项分支、双项分支、多项分支的互相嵌套)

    youqian = False
    youfang = False
    youche = False
    youyanzhi = False
    youtili = False
    
    
    if youqian == True:
        if youfang == True:
            if youche == True:
                if youyanzhi == True:
                    if youtili == True:
                        print("^-^ 一定要娶你")
                    else:
                        print("......")
                else:
                    print("...")
    else:
        print("No")
    巢状分枝

    五、循环结构

    1、while循环

    语法:

    """
    语法:
        while 条件表达式:
            code1...
            code2...
            
    1.初始化一个变量
    2.写上循环的判断条件
    3.自增自减的变量值
    """

    例:打印1~100

    i = 1
    while i <= 100:
        # 在这个位置写要执行的逻辑
        print(i)
        i += 1 # i = i + 1

    执行过程:

    """
    初始化一个变量i
    第一次循环
    i = 1 , i<=100 成立返回True,执行循环
    print(1)
    i += 1 => 2
    
    第二次循环
    i = 2 , i<=100 成立返回True,执行循环
    print(2)
    i += 1 => 3
    
    第三次循环
    i = 3 , i<=100 成立返回True,执行循环
    print(3)
    i += 1 => 4
    ....
    
    什么时候结束?
    当i = 101时候, 判断i <= 100 不成立返回False ,不执行循环
    循环结束...
    """
    执行过程

    例:计算1~100的累加和

    方法一、

    i = 1
    total = 0
    while i<=100:
        # 把所有的i值全部累加到total这个变量中
        total += i # total = total + i
        i+=1
    
    print(total)

    代码解析:

    """
    # 代码解析:
    第一次循环
    i = 1 i<=100 成立执行循环
    total += i => total = total + i => 0 + 1
    i+=1 => 2
    
    
    第二次循环
    i = 2 i<=100 成立执行循环
    total += i => total = total + i => 0 + 1 + 2
    i+=1 => 3
    
    第三次循环
    i = 3 i<=100 成立执行循环
    total += i => total = total + i => 0 + 1 + 2 + 3
    i+=1 => 4
    
    ....
    依次循环
    
    什么时候结束?
    i = 100 
    total = 0 + 1 + 2 + 3 + 4 + ...+ 100 = 5050
    当i = 101 不满足循环的条件 , 直接跳出,循环结束..
    到此打印 5050 ;
    
    
    """
    代码解析

    方法二:

    total = 0
    i = 1
    sign = True
    while sign:    
        total += i # total = total + i
        i+=1
    
        # 手动加上终止循环的条件
        if i == 101 :
            sign = False
    print(total)

     六、单项循环的练习

    1.打印一行十个小星星 help函数查看帮助文档

    # (1).初始化变量
    i = 0
    # (2).循环判断的条件
    while i <10:
        # (4).写上自己的代码逻辑
        print("*",end="") # 打印小星星
        # (3).自增加1
        i+=1
    View Code

    2.通过打印变量实现一行十个小星星

    # 字符串的拼接
    var1 = "我爱你,"
    var2 = "这个世界上所有的女生" 
    res = var1 + var2
    print(res)
    var1 += var2 # var1 = var1 + var2
    print(var1)
    
    # 循环10次,拼接了10个星星
    i = 0
    strvar = ""
    while i < 10:
        strvar += "*" #strvar = '' + "*" / '*' + '*' / "**" + '*' / "***" + "*" / "*********" + "*"
        i+=1
    
    print(strvar)
    View Code

    3.打印一行十个小星星,奇数个为★ , 偶数个位☆ 

    """
    任意数和n取余,范围是多少? 0 ~ (n-1)
    n = 2
    0 % 2 = 0
    1 % 2 = 1
    2 % 2 = 0 
    3 % 2 = 1
    4 % 2 = 0
    5 % 2 = 1
    0~1
    
    n = 5
    0 % 5 = 0
    1 % 5 = 1
    2 % 5 = 2
    3 % 5 = 3
    4 % 5 = 4
    5 % 5 = 0
    6 % 5 = 1
    0~4
    扑克牌 4种花色 方片 草花 红桃 黑桃
    """
    
    i = 0
    while i<10:
        # 写上代码的逻辑
        if i % 2 == 0:
            print("",end="")
        else:
            print("",end="")
        i+=1
    View Code

    4.一个循环打印十行十列的小星星

    """
    0123456789
    **********              0~9
    10111213141516171819
    * * * * * * * * * *     10~19
    **********   20~29
    **********   30~39
    **********   40~49
    **********   50~59
    **********   60~69
    **********   70~79
    **********   80~89
    **********   90~99
    
    怎么能找到 9 19 29 39 49 ... 99 这颗星星呢?
    """
    
    i = 0
    while i < 100:
        # 打印星星
        print("*",end="")
        
        # 打印换行
        if i % 10 == 9:
            print()
        i+=1
    View Code

    5.一个循环打印十行十列隔列换色的小星星

    """
    ★☆★☆★☆★☆★☆
    ★☆★☆★☆★☆★☆
    ★☆★☆★☆★☆★☆
    ★☆★☆★☆★☆★☆
    ★☆★☆★☆★☆★☆
    ★☆★☆★☆★☆★☆
    ★☆★☆★☆★☆★☆
    ★☆★☆★☆★☆★☆
    ★☆★☆★☆★☆★☆
    ★☆★☆★☆★☆★☆
    """
    i = 0
    while i < 100:
        # 打印星星
        # print("*",end="")
        if i % 2 == 0:
            print("",end="")
        else:
            print("",end="")
        
        
        # 打印换行
        if i % 10 == 9:
            print()
        i+=1
    View Code

    6.一个循环打印十行十列隔行换色的小星星

    """
    ★★★★★★★★★★
    ☆☆☆☆☆☆☆☆☆☆
    ★★★★★★★★★★
    ☆☆☆☆☆☆☆☆☆☆
    ★★★★★★★★★★
    ☆☆☆☆☆☆☆☆☆☆
    ★★★★★★★★★★
    ☆☆☆☆☆☆☆☆☆☆
    ★★★★★★★★★★
    ☆☆☆☆☆☆☆☆☆☆
    """
    
    """
    任意数和n进行地板除,会出现n个相同的数字
    0 // 2 = 0
    1 // 2 = 0
    2 // 2 = 1
    3 // 2 = 1
    4 // 2 = 2
    5 // 2 = 2
    
    0 // 6 = 0
    1 // 6 = 0
    2 // 6 = 0
    3 // 6 = 0
    4 // 6 = 0
    5 // 6 = 0
    
    6  // 6  = 1
    7  // 6  = 1
    8  // 6  = 1
    9  // 6  = 1
    10 // 6  = 1
    11 // 6  = 1
    
    12 // 6  = 2
    ....
    
    0 ~ 9   // 10 会出现10个相同的0
    10~19   // 10 会出现10个相同的1
    20~29   // 10 会出现10个相同的2
    ...
    
    90~99   // 10 会出现10个相同的9
    
    到此, 地板除的值  范围为: 0 ~ 9
    
    """
    print("<======>")
    i = 0
    while i<100:
    
        # 打印星星
        if i // 10 % 2 == 0:
            print("",end="")
        else:
            print("",end="")
        
        # 打印换行
        if i % 10 == 9:
            print()
    
        i+=1
    View Code

    七、练习

    """
    1.提⽰⽤户输入马化腾. 判断⽤户输入的对不对. 如果对, 提⽰真聪明, 如果不对, 提醒该充值了
    
    2.根据身高(height)找对象
    男生在1米 ~ 1.5米之间 =>打印小强 你在哪里?
    男生在1.5 ~ 1.7米之间 =>打印没有安全感~
    男生 1.7 ~ 1.8米之间 =>打印帅哥 留个电话
    男生 1.8 ~ 2米之间 =>打印帅哥 你建议多一个女朋友吗
    
    3.猜大小的游戏:
    设定一个理想数字比如:66,让用户输入数字,如果比66大,则显示猜测的结果大了;如果比66小,则显示猜测的结果小了;只有等于66,显示猜测结果正确。
    
    4.输出 1-100 内的所有奇数
    5.输出 1-100 内的所有偶数
    6.⽤户登陆(有三次输错机会)且每次输错误时显示剩余错误次数(提示:使⽤字符串格式化)
    """
    '''
    name = input("谁是中国人民当中最能抄的?")
    
    if name == "马化腾":
        print("真聪明")
    else:
        print("不充值你怎么可能变得更强")
    '''
    1
    '''
    height = float(input("请输入您的升高:"))
    # print(height, type(height))
    '''
    #  python 特有:
    '''
    if 1 <= height <= 1.5:
        print("小强在哪里")
    elif 1.5 < height <= 1.7:
        print("没有安全感")
    elif 1.7 < height <= 1.8 :
        print("打印帅哥 留个电话")
    elif 1.8 < height <= 2:
        print("打印帅哥 你建议多一个女朋友吗")
    '''
    # 通用写法
    '''
    if 1 <= height and height <= 1.5:
        print("小强在哪里")
    elif 1.5 < height and height <= 1.7:
        print("没有安全感")
    elif 1.7 < height and height <= 1.8 :
        print("打印帅哥 留个电话")
    elif 1.8 < height and height <= 2:
        print("打印帅哥 你建议多一个女朋友吗")
    else:
        print("没有合适的选项")
    '''
    2
    sign = True
    while sign:
        num = float(input("请输入一个数字:"))
        if num == 66:
            print("猜对了")
            sign = False
        elif num > 66 :
            print("太大了")
        elif num < 66:
            print("太小了")
    3
    # 4.输出 1-100 内的所有奇数
    i = 1
    while i <= 100:
        if i % 2 == 1:
            print(i)
        i+=1
    4
    # 5.输出 1-100 内的所有偶数
    i = 1
    while i <= 100:
        if i % 2 == 0:
            print(i)
        i+=1
    5
    times = 1
    sign = True
    while sign:
        # 第一步: 输入密码
        pwd = input("请输入您的密码")
        
        # 判断输入的是不是111
        if pwd == "111":
            # 输入成功的情况1
            print("登录成功")
            # 终止循环
            sign = False
        else:
            # 输入失败的情况2
            # 剩余次数= 总次数 - 已用次数
            res = 3 - times
            print("输错了,你还剩余%d次" % (res) )
        
            # 如果次数减到0,意味着循环终止
            if res == 0:
                sign = False        
        
        # 自增加1
        times+=1
    6
  • 相关阅读:
    java synchronized
    [多问几个为什么]为什么匿名内部类中引用的局部变量和参数需要final而成员字段不用?(转)
    Java中static、final用法小结(转)
    使用 Spring 2.5 注释驱动的 IoC 功能(转)
    (转载)Spring 注解@Component,@Service,@Controller,@Repository
    Spring中@Autowired注解、@Resource注解的区别
    控制反转和依赖注入模式(转)
    HDU 4758 Walk Through Squares (2013南京网络赛1011题,AC自动机+DP)
    HDU 4745 Two Rabbits (2013杭州网络赛1008,最长回文子串)
    HDU 4747 Mex (2013杭州网络赛1010题,线段树)
  • 原文地址:https://www.cnblogs.com/kongxiangqun/p/13259598.html
Copyright © 2020-2023  润新知