zoukankan      html  css  js  c++  java
  • python流程控制

    一、 while循环
    while 无限循环

    while 循环的结构:
    while 条件:
      循环体

    如何终止循环?
    1,改变条件 (标志位flag的概念)
    2, break 终止循环。
    flag = True
    while flag:
      print('我的滑板鞋')
      print('忐忑')
      flag = False
      print('茉莉花')
      print('老司机带带我')

    练习 打印出 1 ---100
    方法1:

    flag = True
    count = 1
    while flag:
         print(count)
         count = count + 1
         if count == 101:
             flag = False
    View Code

    方法2:

    count = 1
    while count < 101:
         print(count)
         count = count + 1
    View Code

    break 循环中只要遇到break 立马结束循环。

    while True:
        print(111)
        print(222)
        break
        print(333)
        print(444)
    print(123)    #  111 222 123
    View Code

    利用break,while, 计算 1 + 2 + 3 ....100 的结果

     count = 1
     sum = 0
     while True:
         sum = sum + count
         count = count + 1
         if count == 101:
             break
     print(sum)  #5050
    View Code

    continue: 结束本次循环,继续下一次循环。

     while True:              # 无线循环输出111 222
         print(111)
         print(222)
         continue
         print(333)
    View Code

    while else 结构

    如果while循环被break打断,则不执行else代码。若没有被break打断则执行else代码。

     count = 1
     while count < 5:
         print(count)
         count = count + 1
         if count == 3: break
     else:
         print(666)
     print(222)           # 1 2 222
    View Code

    应用场景:
    验证用户名密码,重新输入这个功能需要while循环。
    无限次的显示页面,无限次的输入......

     

     

    二、 格式化输出
    制作一个模板,某些位置的参数是动态的,像这样,就需要用格式化输出。

    字符串的动态替换

    % 占位符 ,s 数据类型为字符串, d为数字类型

    name = input('请输入姓名:')
    age = int(input('请输入年龄:'))
    sex = input('请输入性别:')
    第一种方式:
    msg = '你的名字是%s,你的年龄%d,你的性别%s' % (name,age,sex)
    print(msg)

    第二种方式
    msg = '你的名字是%(name1)s,你的年龄%(age1)d,你的性别%(sex1)s' % {'name1':name,'age1':age,'sex1':sex}
    print(msg)

    bug 点 在格式化输出中,只想单纯的表示一个%时,应该用%% 表示
    msg = '我叫%s,今年%d,我的学习进度1%%' % ('关亮和',28)
    print(msg)

     

     

     

    三、 运算符
    == 比较的两边的值是否相等
    = 赋值运算
    != 不等于
    += 举例: count = count + 1 简写 count += 1
    -=
    *= : count = count * 5 简写 count *= 5
    /=
    **=
    //=

    逻辑运算符:and or not

    优先级:()> not > and > or
    第一种情况,前后条件为比较运算

    print(1 < 2 or 3 > 1)
    print(1 < 2 and 3 > 4)
    print(1 < 2 and 3 > 4 or 8 < 6 and 9 > 5 or 7 > 2)
    print(1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8)
    print(1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6)
    
    #结果:
    #True
    #False
    #True
    #False
    #False
    View Code

     

    第二种情况,前后两边的条件为数值

    x or y , x为真,值就是x,x为假,值是y
    x and y, x为真,值是y,x为假,值是x

    print(1 or 2)
    print(1 and 2)
    print(5 or 2)
    print(5 and 2)
    print(0 or 2)
    print(-1 or 2)
    
    #结果:
    #1
    #2
    #5
    #2
    #2
    #-1
    View Code

     


    补充
    int --- > bool
    0 对应的bool值为False,非0(包括负数)都是True.

    bool --- > int
    True对应的数值是1 ,False对应的数值是0

    print(bool(100))
    print(bool(-1))
    print(bool(0))
    print(int(True))
    print(int(False))
    结果:
    True
    True
    False
    1
    0


    print(0 or 3 and 5 or 4) --> 5

     

     

     

    四、 编码初识(以下ASCII等编码代表的字符我乱写的,只是用于解释,想看真正的编码代表的意思可自行百度)


    以前战争时期要发一些信息的时候,一般就用电报,“滴滴滴”这样发过去,那对方是怎么知道这些“滴滴滴”是什么意思呢?

    数据的传输最终都是转换成高低电平的形式,高低电平就用1和0表示。
    比如一个叫小明的人要发一段信息给一个叫沙比的人,内容如下:

    小明: 今晚吃鸡!
    今:0101
    晚:010
    吃:010001
    鸡:01111

    按照这样发过去的信息为:010101001000101111
    沙比看到肯定一脸懵逼,表示看不懂,所以为了能让沙比看懂,就要制定一系列的规则,主要是:
    1、断位:规定多少个数字断一次位
    2、密码本:记录明文与二进制的对应关系。
    规范之后,小明发给沙比的信息就应该改变一下:
    今:0101 0001
    晚:0101 1101
    吃:0101 0001
    鸡:0111 1100
    那沙比收到就是01010001 01011101 01010001 01111100 他会按照之前规定的多少个数字断位一次,每个数字的组合代表什么意思就从密码本上
    查看,那样就可以实现通信了。


    所以在计算机界就出现了几个版本的密码本:

    ASCII: 最初版本的密码本:包含所有的英文字母,数字,特殊字符。
    最初:
    一个字符 000 0001 用7位二进制表示
    后来优化-->预留一位以便以后的扩展,因此使用8位二进制,而英文用不了那么多位二进制,所以最开始的一位都是0(一位二进制可以
    表示两种(0或者1),8位二进制可以表示2**8个字符)
    A: 01000001 8位 == 1个字节
    a: 01100001
    c: 01100011
    对于ASCII码来说:
    'hello laddy' 一个字节代表一个字符,这里共11个字符,11个字节。

    unicode:万国码,创建的目的是将所有国家的语言文字都写入这个密码本。
    起初:1个字符用16位二进制即2个字节表示。但是发现并不够涵盖所有国家的语言。
    A: 01000001 01000001
    b: 01000001 01100001
    中:01000001 01100101
    改版:1个字符 32位 4个字节表示。但是浪费资源,占空间。
    A: 01000001 01000001 01000001 01000001
    b: 01000001 01100001 01000001 01000001
    中:01000001 01100101 01000001 01000001

    Unicode升级后--->utf-8: 最少用8位表示一个字符。
    英文字母A: 01000001                                     用8位 一个字节表示
      欧洲文字: 01000001 01100001                    用16位 两个字节表示
             中文: 01000001 01100101 01000001   用24位 三个字节表示
    'abc小姐姐':12个字节

    gbk:国标,只包含中文、英文(英文字母,数字,特殊字符)
    英文A:01000001                     用8位 一个字节表示
      中文:01000001 01100101   用16位 两个字节表示

    这几种编码中,英文字母对应的意思都是统一按照ASCII的对应关系,而其他字符没有任何关系

    所有编码都与unicode有关


    8 bit == 1Bytes                                                       位(bit)音译为“比特”,表示二进制位
    1024Bytes == 1KB                                                  字节(Byte)音译为“拜特”,习惯上用大写的“B”表示。
    1024KB == 1MB                                                   1个字节等于8个比特(1Byte=8bit),也就是一个字节由八个二进制位构成
    1024MB == 1GB
    1024GB == 1TB
    1024TB == 1PB


    gbk utf-8 之间的转换?
    且听很多回后的分解

     

  • 相关阅读:
    POJ 1673
    POJ 1375
    POJ 1654
    POJ 1039
    POJ 1066
    UVA 10159
    POJ 1410
    POJ 2653
    POJ 2398
    POJ 1556
  • 原文地址:https://www.cnblogs.com/yidashi110/p/10092305.html
Copyright © 2011-2022 走看看