Python全栈学习_day002知识点

  • 2020 年 1 月 19 日
  • 笔记

今日大纲:

1. while循环  2. 格式化输出  3. 运算符  4. 编码初识

1. while循环

    - while 无限循环:      while True:     # 死循环          print('大悲咒')          print('可不可以')          print('青春')          print('两只老虎')          print('盗将行')
    - while 循环的结构:      while 条件:          循环体
- 如何让循环终止          1. 改变条件(标志位[flag]的概念)          flag = True          while flag:              print('大悲咒')              print('可不可以')              print('青春')              flag = False              print('两只老虎')              print('盗将行')          2. 加入关键字break,终止循环          break:循环中,只要遇到break,立马结束循环          while True:              print(111)              print(222)              break              print(333)              print(444)          print(123)          结果:              111              222              123        - 用while循环输出1-100      方法一:      flag = True      count = 1      while flag:          print(count)          count += 1          if count == 101:              flag = False      方法二:      count = 1      while count < 101:          print(count)          count += 1        - 用while,break打印1+2+3+...+100的结果      count = 1      sum = 0      while True:          sum += count          count += 1          if count == 101:              break      print(sum)        - continue:结束本次循环,继续下次循环      while True:          print(111)          print(222)          continue          print(333)        - while else 结构      如果while循环被break打断,则不执行else代码      count = 1      while count < 4:          print(count)          count += 1      else:          print(666)      print(222)      结果:      1      2      3      666      222        count = 1      while count < 4:          print(count)          count += 1          if count == 3:break      else:          print(666)      print(222)      结果:      1      2      222
应用场景:      1. 验证用户名密码,重新输入这个功能需要while循环      2. 无限次的显示页面,无限次的输入...

2. 格式化输出


   制作一个模板,某些位置的参数的动态的,像这样就需要用格式化输出      字符串的动态替换
    第一种方式:      name = input('请输入姓名:')      age = input('请输入年龄:')      sex = input('请输入性别:')      # % 为占位符;s:str,数据类型为字符串;d: digit,数据类型为数字      msg = '你的名字是%s,你的年龄是%s,你的性别是%s' % (name, age, sex)      print(msg)        第二种方式:      name = input('请输入姓名:')      age = input('请输入年龄:')      sex = input('请输入性别:')      msg = '你的名字是%(name1)s,你的年龄是%(age1)s,你的性别是%(sex1)s' % {'name1':name, 'age1':age, 'sex1':sex}      print(msg)
    小知识点:在格式化输出中,只想单纯的表示一个%时,应该用两个%表示
    name = 'BlameK'      age = 23      msg = '我叫%s,今年%s,我的学习进度1%%' % (name, age)      print(msg)      结果:      我叫BlameK,今年23,我的学习进度1%

3. 运算符

    算术运算:      +:加      -:减      *:乘      /:除      %:取余,返回除法的余数      **:幂      //:取整除 - 返回商的整数部分        比较运算:      ==:等于 - 比较对象是否相等      !=:不等于 - 比较两个对象是否不相等      <>:不等于      >:大于      <:小于      >=:大于等于      <=:小于等于        赋值运算:      =:简单的赋值运算符      +=:加法赋值运算符          count = count + 1  简写  count += 1      -=:减法赋值运算符      *=:乘法赋值运算符          count = count * 5  简写  count *= 5      /=:除法赋值运算符      %=:取模赋值运算符      **=:幂赋值运算符      //=:取整除赋值运算符        逻辑运算:      and:布尔‘与’      or:布尔‘或’      not:布尔‘非’
    优先级(从高到低):      ()、not、and、or
    第一种情况:前后条件为比较运算      print(1 < 2 or 3 > 1)   True      print(1 < 2 and 3> 4)   False      print(1 < 2 and 3 > 4 or 8 < 6 and 9 > 5 or 7 > 2)  True      print(1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8)  False      print(1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6)    False        第二种情况:前后两边的条件为数值      x or y if x is True,return x      print(1 or 2)   1      print(0 or 2)   2      print(0 or 0)   0      print(-1 or 3)  -1      and 和 or相反      print(1 and 2)  2      print(0 and 2)  0      print(2 and -1) -1        print(1 or 3 and 5 or 4)    1      print(0 or 3 and 5 or 4)    5      变态面试题(总结规律):      print(1 > 2 or 3 and 4 < 6)     True      print(2 or 3 and 4 < 6)     2        补充:      int --> bool      0对应的bool值为False,非0都是True      print(bool(100))    True      print(bool(-1))     True      print(bool(0))      False      print(int(True))    1      print(int(False))   0
应用场景:      1. if while 等条件判断(数据库,Django ORM复杂查询)      2. 面试时

4. 编码初识

    尹宁      太白:今晚吃鸡!      今:0101      晚:010111      吃:0101 00000 01      鸡:011      010101011101010000001011      上面的不合理,应该有断位      固定8位:      今:0101 0001      晚:0101 1101      吃:0101 0001      鸡:0111 1100      01010001 01011101 01010001 01111100      断位,要有一个密码本:记录的铭文与二进制的对应关系
 ASCII:最初版本的密码本:所有的英文字母,数字,特殊字符。          最初:一个字符(7位) 000 0001          后来优化:一个字符(8位) 0000 0001              (最左一位全是0)          A:0100 0001 65          a:0110 0001 97          c:0110 0011 99          8位 == 一个字节      对于ASCII码(1个字符 == 1个字节)来说:          'Hello Laddy'   11个字符,11个字节,88位
    字符:你能看到的这个内容的最小单元。
    unicode: 万国码,将所有国家的语言文字都写入这个密码本          起初:1个字符 == 16位 == 2个字节              A:01000001 01100001              中:01100011 01100001              但这样仍然表示不完所有中文          改版:1个字符 == 32位 == 4个字节              中:01100011 01100001 01000001 01100001          浪费资源,占空间
    8位永远等于一个字节
    utf-8:最少用8位去表示一个字符。             A:01000001   一个字节          欧洲:01100011 01100001    两个字节          中文:01100011 01100001 01000001   三个字节          'old男孩'     9个字节

    gbk:国标,只包含中文、英文(英文字母、数字、特殊字符)             A:01000001   一个字节          中文:01100011 01100001    两个字节        gbk、utf-8之间的转换?(下次讲解)          必须通过unicode进行转换
8 bit(位) == 1 bytes(字节)[1 B]      1024 bytes(1024 B) == 1 KB      1024 KB == 1 MB      1024 MB == 1 GB      1024 GB == 1 TB