02格式化输出与while循环、运算符、编码

一、while循环

  1. 基本结构

    while 循环条件:
        循环体
    
  2. 执行顺序:

    • 遇到while时候,先判断循环条件是否为True
    • 如果为True,执行循环体
    • 当循环体执行结束之后,再次判断while的条件是否为True
    • 如果为True,执行循环体,如果为False,结束循环
  3. 循环控制关键字

    • break:直接终止循环,退出整个循环

      # 打印1-10
      count = 1
      while True:
          print (count)
          if count == 10:
              break
      
    • continue:退出本次循环,直接开始下一次循环

      # 打印1-10中的偶数
      count = 1
      while count < 11:
          if count %2 == 0:
              print (count)
              count += 1
          else:
              count += 1
              continue
              print('这是奇数')
      # 这是奇数  这句话不可能打印出来       
      
  4. 终止循环的方式:

    • 让条件不成立

      flag = True
      while flag:
          print("1")
          print("2")
          print("3")
          flag = False
      

      因为flag的值在循环体中被改变了,循环条件不成立,所以循环结束。

    • 达到预期效果,手动终止循环。

      # 用while打印1-10,使用break终止循环
      i = 1
      while True:
          print(i)
          if i == 10:
              break
          else:
              i += 1
      
    • 不能让程序进入死循环。

  5. 练习1

    • 使用while循环求1-100所有数字的和

      sum1_100=0
      num = 1
      while True:
          sum1_100 += num
          if num == 100:
              break
          else:
              num += 1
      print("1-100所有数字的和为:",sum1_100)
      
      count = 1
      sumall = 0
      while count < 101:
              sumall += count
              count += 1
      print("1-100所有数字的和为:",sumall)
      
  6. 练习2

    • 使用while循环求1-100所有偶素的和:用%运算符
    # 方法一
    sumall = 0
    count = 1
    while count < 101:
        if count %2 == 0:
            sumall += count
        count += 1
    print("1-100所有偶数和为:",sumall)
    
    # 方法二
    sumall = 0
    count = 2
    while count < 102:
        sumall += count
        count += 2
    print("和为:",sumall)
    
  7. while.....else...固定搭配用法

    • 只有当while中的条件正常结束的时候才会执行else中的语句。

      count = 0
      while count < 5:
          print (count)
          count += 1
      else:
          print("正常结束")
      # "正常结束"会正常打印。
      # 因为while是因为循环条件不成立而成功结束循环的。
      
      count = 0
      while count < 5:
          print (count)
          count += 1
          if count == 2:
              break
      else:
          print("正常结束")
      # 此时只会打印0和1,当count=2时候,被break终止了循环,所以else中的语句不会执行二、格式化输出
      

二、格式化输出

  1. 使用%占位符

    name = input("name:")
    age = input("age:")
    sex = input("sex:")
    job = input("job:")
    hobby = input("hobby:")
    msg = '''
    ---------- info of %s ----------
    name    : %s
    age     : %s
    sex     : %s
    job     : %s
    hobby   : %s
    ---------- end -----------------'''%(name,name,age,sex,job,hobby)
    # 后面%括号中的值,一一对应替换前面占位符中的值。
    print(msg)
    
  2. 使用{}.format()

    name = input("name:")
    age = input("age:")
    sex = input("sex:")
    job = input("job:")
    hobby = input("hobby:")
    msg = '''
    ---------- info ----------
            name: {}
            age: {}
            sex: {}
            job: {}
            hoby: {}
    ---------- end ----------'''
    print(msg.format(name,age,sex,job,hobby))
    
    #或者
    name = input("name:")
    age = input("age:")
    sex = input("sex:")
    job = input("job:")
    hobby = input("hobby:")
    msg = '''
    ---------- info of {} ----------
    name    : {}
    age     : {}
    sex     : {}
    job     : {}
    hobby   : {}
    ---------- end -----------------'''.format(name,name,age,sex,job,hobby)
    print(msg)
    
  3. 如果想输出50%,使用%%来转义

    msg = "我叫%s,学习进度为1%"%('jack')
    print(msg)
    # 如果这样,程序会报错,把1%也当做了一个占位符了
    
    msg = "我叫%s,学习进度为1%%"%('jack')
    print(msg)
    # 这样就不会报错了
    
    # 或者用format输出
    msg = "我叫{},学习进度为1%".format('jack')
    print(msg)
    
  4. 使用场景

    • 字符串中想让某些位置变成动态可传入的,这时候就要考虑到使用格式化输出了。

三、运算符

  1. 算术运算符

    • +:
    • -:
    • *:
    • /:
    • % :取余
    • **:求幂例如2**3表示2的3次方
    • //:取整5//2,结果为2
  2. 比较运算符

    • ==:等于,比较符号两边的值是否相等
    • !=:不等于
    • >:大于
    • <:小于
  3. 复制运算

    • =:赋值
    • +=:加完再赋值
    • -=:
    • *=:
    • /=:
    • %=:
    • **=:
    • //=:
  4. 逻辑运算

    • in:是否在,例如:“5” in “12345” 结果为True

    • and:与

    • or:或

    • not:非

      • 优先级:

        • 在没有()的情况下,not > and > or

        • 情况一

          print(2>1 and 3<4 or 4>5 and 6<7)
          #因为and优先级高于or,所以先把所有的and算一下
          #print(True or False)
          # 结果为
          
        • 情况二

          print(0 or 2)
          print(2 or 0)
          print(3 or 4)
          print(4 and 5)
          print(6 and 0)
          # 结果
          2
          3
          5
          0
          # 运算规则
          
          • 比较规则
            • 数字中只有0是假,别的全是真
            • or:
              • 如果两边都不为0,结果为or左边的值
              • 如果有一边为0,结果为非0的那个值
            • and:
              • 两边只要有一边为0,结果就为0
              • 两边都不为0,结果为and右边的值
        • 练习

          #求下列值
          8 or 4
          0 and 3
          0 or 4 and 3 or 7 or 9 and 6
          1<2 and 3 or 6
          1>2 and 3 or 6
          #结果
          8
          0
          3
          3
          6
          

四、编码

  1. ASCII码

    • 只支持英文,数字和特殊字符,不支持中文
    • 8位(一个字节)表示一个字符
  2. gbk国标码

    • 在ASCII基础上,添加了支持中文
    • 英文字符占1个字节,中文占2个字符
  3. Unicode 国际码

    • 国际上通用的编码
    • 英文占2个字节,中文占4个字节
    • 体积大
    • 兼容性高,与任何编码都有映射
  4. utf-8

    • 英文占1个字节,中文占3个字节,欧洲占2个字节
  5. 测试

    '中国12he':GBK码,占用8个字节
    '中国12he':UTF-8码,占用10个字节
    
  6. 单位转换

    8bit=1B(byte)
    1024B=1KB
    1024KB=1MB
    1024MB=1GB
    10024GB=1TB
    1024TB=1PB
    1024PB=1EB
    
posted @ 2021-02-26 17:06  majic_jie  阅读(81)  评论(0)    收藏  举报