zoukankan      html  css  js  c++  java
  • Python First Day

    A. python介绍
     - 可以减少开发成本,代码开源
     - 运行速度慢

     B. python和其它语言对比
      - C语言 :        编译 -> 机器码 -> 计算机
      - 其它高级语言:  编译 -> 字节码 -> 机器码 -> 计算机

     C. python种类
      - CPython     代码 -> C字节码 -> 机器码 (一行一行)
      - PYPY(特殊)代码 -> C字节码 -> 机器码 全部转换完 -> 执行
      - 其它Python  代码 -> 其它字节码 -> 机器码
     
     D. python基础
      a. Python规则
       1. 安装: python解释器
       2. 写程序
        C:Python35python.exe D:1.txt
        # a. 打开文件,读取文件内容
          # b. 词法分析,语法分析
          # c. 字节
         - 解释器
         windows:
         方法一:C:Python35python.exe D:1.txt
             
         方法二:C:Python35python.exe
     
        Linux:
        方法一:/usr/bin/python /1.txt
     
        方法二:/usr/bin/python
        
            头部#!/usr/bin/python
                chmod 755 1.py
                ./1.py
             
           - 潜规则
           .py 结尾
      b. 编码
        - 英文 256个-> ascii :a  00000010   由八位组成
        - 万国码(至少16位) :a  00000000 00000010    中:10000000 00000000 00000010   最少十六位,没有上限
               utf-8,对万国码压缩 :a  00000010  中:10000000 00000000 00000010  最少八位,没有上限
               gbk,gb2312         :a  00000010  中: 00100110 00000010
          例: 
          中文:龙
           utf-8,需要使用三个字节来表示 24   10000000 00000000 00000010
           gbk,gb2312  需要使用二个字节来表示 16   00100110 00000010
       
        - Python编码相关:
            文件编码
            # -*- coding:utf-8 -*-    声明解释编码
            Python解释器编码(py3默认 utf-8)
            Python解释器编码(py2默认 ascii)
            
     E. IDE
       - pycharm
        1.使用
        
        - 添加或者修改文件模板
        File->settings->Editor->File and Code Templates->Python Script
        添加:
        #!/usr/bin/python
        # -*- coding:utf-8 -*-
        
       - python版本管理切换
        File->settings->Prgject:python->project interpreter

        - 已有文件重命名
        右击要重命名的文件->refactor->rename

       - Python模块安装
        File->settings->Prgject:python->project interpreter
        
          - PyChram Tab键补全
        file -> Power Save Mode
      
        - PyChram字符集编码设置为UTF-8
        File->settings->Editor->Code Style->File Encodings
       
       - PyChram字体设置
        File->settings->Editor->Colors & Fonts->Font

       - Ctrl+鼠标调整比例
        File->settings->Editor->General ->Change font size ....
        
       - 快捷键
        alt+ctrl+s           # 打开设置界面
        tab                # 选择要缩进的代码,按键缩进
        shift+tab            # 选择要缩进的代码,按键增加
        ctrl+d               # 复制本行粘贴到下一行
        ctrl+?          #选择要添加注释的行,按键进行#添加或去除
        双按shift       #全局搜索
        ctrl+/         #注释
        ctrl+F         #查找
        ctrl+R         #查找替换 
        
     F. 注释
      #
      """ """
      
     G. .pyc文件,字节码文件
       - import + 文件名
       
     H. 变量
       - 字母
       - 数字(不能开头)
       - 下划线
       - 不能使用python内置关键字
       - PS: 下划线分割
       
       n = "name"
       v = "name"
       #只开辟一个内存空间 ,存在优化机制
       
       n = "name"
       v = n
       n = "pwd"
       #n为pwd ,v 为name
       
     I. 输入,输出
       v = input(">>>")
       等待用户输入,显示输入内容 ,输出的数字 7 为 "7" 用int()转换
       
       import getpass
        v = getpass.getpass('>>>')
       等待用户输入,不显示输入内容
       
       print(v)
       
     J. 条件语句
      - 严格的缩进
      
      - 例
      if 条件 :
       满足执行这
      elif 条件:
       否则满足执行这
      else:
       都不满足执行这
     
     - pass 什么都不执行 
      
     K. 循环语句
      while 条件:

      - continue 结束本次循环
      - break 结束循环
     - exit() 退出脚本  

     L. 其它  

    i += 1 相等于  i = i + 1
      3%2 等于 1
                       
      age = 18    数字
      age = '18' 字符串
      name = 'alex'
      name = "alex"
      name = """alex"""
      name = "'alex'"
      name = """          
          asdfalex
          asdfasdf
          asdf
           """

     M. 运算符

    1、算数运算:

    2、比较运算:

    3、赋值运算:

    4、逻辑运算:

    5、成员运算:

      a.
          i += 1
     
      b.
          if 1 == 1 or 1 > 2 and 1 == 4:
              print('正确')
          else:
              print('错误')
     
      c.
          content = "Alex 前几天去泰国玩姑娘,一不小心染上了病,他的内心活动是,真该多来几个"
     
          if "前几天去" in content:
              print('包含敏感字符')
          else:
              print(content)

     N. Python数据类型
      a. 整数 int
       - 创建
        a = 123
        a = int(123)
       - 转换
        age = "18"
        new_age = int(age)
      - 验证
       print(type(a))   
       
     b. 布尔值
       - 创建
        a = True
        b = False
       - 转换
        v = bool(1) 数字转换只有0为False 其它Ture
        a = ""
        v = bool(a) 字符串,只有""是False,其他True
        待续...
        
      c. 字符串  
       - 创建
        a = "alex"
        a = str('alex')
       - 转换
        age = 18
        new_age = str(age)
        
       - 字符串的拼接
        name = 'alex'
        gender = '女'
        new_str = name + gender
        
       - 字符串格式化
        # 占位符,%s字符串  %d 数字
        # name = '我叫李杰,性别:%s,我今年%s岁,我在说谎!'
        # new_str = name %('男',18,)
        
       - 判断子序列是否在其中
        content = "Alex 前几天去泰国玩姑娘,一不小心染上了病,他的内心活动是,真该多来几个"
        if "前几天去" in content:
         print('包含敏感字符')
        else:
         print(content)
       
       - 移除空白
        val = " alex "
        # new_val = val.strip() # 左右
        # new_val = val.lstrip()# 左边
        # new_val = val.rstrip() # 右边
        
       - 分割
        user_info = "alex|sb123|9"
        # v = user_info.split('|')
          # v = user_info.split('|',1)
          # v = user_info.rsplit(' ',1)
         
       - 长度(字符)
        val = "李杰sb"
        v = len(val)  #等于4
        
       - 索引
        val = "李杰sb"
        v = val[0]   #等于 李
        
        val = input('>>>')
        i = 0
        while i < len(val):
         print(val[i])
         i += 1
         
        - 切片
           name = '我叫李杰,性别我今年岁,我在说谎!'
           print(name[0])
           print(name[0:2])
           print(name[5:9])
           print(name[5:])
           print(name[5:-2])
           print(name[-2:])
       - 列表
         创建:                                
              a = ['alex','狗','eric',123]       
              a = list(['alex','狗','eric',123]) 
             
          in判断
         
          if 'alex' in a:
          if 'al' in a[0]:
         
          索引
          val = a[0]  
        
          长度
          val = len(a)
        
          切片
          a = ['alex','狗','eric',123]
           v = a[0::2]                 
           print(v)
                              
          追加
          a.append('xxoo')
          # 在最后追加
       
           插入
           a.insert(0,'牛')
          # 在索引前边添加
       
          删除
           a.remove('eric')
           # 删除匹配到的第一个
           del a[0]   
           # 按索引删除
          
          替换
          a[1] = 'asd'
           # 按照索引替换
       
          For循环
          for item in a:
           print(item)
           #输出每个元素
         
       - 字典
         创建
         v = {                             
                 'name': 'alex',    
                 'password': '123123'
            }                   
           # 字典是无序的 
         
         索引
           n = v['name']
        
         增加,无,增加;有,修改
           v['age'] = 19
        
         删除  
           del v['name']
        
         For循环
           for item in v.keys():   
                print(item)         
            for item in v.values(): 
                print(item)         
            for key,val in v.items():
                print(key,val)      
           
           print(len(user_dict))  #输出有几对                                           
                                                                          
            PS: 相互嵌套                                                  
            user_dict = {                                                 
                'k1': 'v1',                                               
                'k2': {'kk1':'vv1','kk2':'vv2'},                          
                'k3': 123,                                                
                'k4': ['alex','eric',['a','b','c'],'李杰',{'k11':'vv1'}], 
            }                  
                                                      
            user_dict['k4'][2].append('123')                              
            user_dict['k4'][4]['n'] = '过啥龙'                            
        
       - 文件
        创建文件db
        #读文件
        f1 = open('db','r')  
        date = f1.read()    
        f1.close()
        #格式化
        # sys|123456|3
        # sy|123456|0
        # 转换成
        # [{'pwd': '123456', 'name': 'sys', 'num': '3'}, {'pwd': '123456', 'name': 'sy', 'num': '0'}]
        
        user_info_list = []            
        user_str_list = date.split(' ')
        for item in user_str_list:     
            temp = item.split('|')     
            v = {                      
                'name':temp[0],        
                'pwd':temp[1],         
                'num':temp[2]          
            }                          
            user_info_list.append(v)   
     
            
       #  [{'pwd': '123456', 'name': 'sys', 'num': '3'}, {'pwd': '123456', 'name': 'sy', 'num': '0'}]
       #  转换成
       #  sys|123456|3
       #  sy|123456|0 
        
        user_str_list = []                                         
        for item in user_info_list:                                
            temp = "%s|%s|%s"%(item['name'],item['pwd'],item['num'])
            user_str_list.append(temp)                             
        target = "%s %s"%(user_str_list[0],user_str_list[1])      
        
        #写文件
        f2 = open('db','w')
        f2.write(target)  
        f2.close()       

    --------------------------------------------------------------------------------------------------------------------------------------------------------------

    练习1

    有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
    即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}

    答:

     1 A = [11,22,33,44,55,66,77,88,99]
     2 A1 = []
     3 A2 = []
     4 B = {'k1':A1,'k2':A2}
     5 for item in A:
     6     if item < 66:
     7         A1.append(item)
     8     elif item == 66:
     9         pass
    10     else:
    11         A2.append(item)
    12 print(B)
    View Code

    练习2

    功能要求:

    • 要求用户输入总资产,例如:2000
    • 显示商品列表,让用户根据序号选择商品,加入购物车
    • 购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
    • 附加:可充值、某商品移除购物车

    goods = [
        {"name": "电脑", "price": 1999},
        {"name": "鼠标", "price": 10},
        {"name": "游艇", "price": 20},
        {"name": "美女", "price": 998},
    ]

    答:

     1 goods = [
     2     {"name": "电脑", "price": 1999},
     3     {"name": "鼠标", "price": 10},
     4     {"name": "游艇", "price": 20},
     5     {"name": "美女", "price": 998},
     6 ]
     7 amount = 2000
     8 card = []
     9 print('欢迎光临!')
    10 while True:
    11     option = input('1.购物
    2.查询购物车
    3.结账
    4.查询余额
    5.充值
    6.退出
    请输入:
    ')
    12     if option == '1':
    13         for item in goods:
    14             print(item['name'],item['price'],'')
    15         type = 'y'
    16         while type != 'q':
    17             res = input('请输出购买商品:')
    18             for item in goods:
    19                 if res == item['name']:
    20                     card.append(item)
    21                     print('已加入购物车')
    22             type = input('按任意键继续购买,按q返回主页')
    23     elif option == '2':
    24         option_1 = 'n'
    25         while option_1 != 'q':
    26             type = input('查看购物车请按1,删除商品请按2,按q键返回主页')
    27             if type == '1':
    28                 for item in card:
    29                     print(item['name'],item['price'],'')
    30             elif type == '2':
    31                 option_2 = 'n'
    32                 while option_2 != 'q':
    33                     res = input('请输入要删除的商品名:')
    34                     for item in card:
    35                         if res == item['name']:
    36                             card.remove(item)
    37                             print('删除成功')
    38                     option_2 = input('任意键继续删除,按q键返回')
    39             elif type == 'q':
    40                 option_1 = 'q'
    41             else:
    42                 print('请正确输入')
    43     elif option == '3':
    44         num = 0
    45         for item in card:
    46             money = int(item['price'])
    47             num += money
    48         if amount >= num:
    49             amount -=num
    50             print('已结账')
    51             card = []
    52         else:
    53             print('余额不足')
    54         option_1 = input('返回主页请按任意键,退出请按q')
    55         if option_1 == 'q':
    56             break
    57         else:
    58             continue
    59     elif option == '4':
    60         amount_1 = str(amount)
    61         print('当前余额为:' + amount_1)
    62         option_1 = input('返回主页请按任意键,退出请按q')
    63         if option_1 == 'q':
    64             break
    65         else:
    66             continue
    67     elif option == '5':
    68         option_2 = 'n'
    69         while option_2 != 'q':
    70             money = input('请输出充值金额:')
    71             if money.isdigit():
    72                 pass
    73             else:
    74                 print('请正确输入!')
    75                 continue
    76             option_1 = input('确认请按y,返回请按任意键!')
    77             if option_1 == 'y':
    78                 money = int(money)
    79                 amount += money
    80                 print('充值成功')
    81                 option_2 = input('继续充值请按任意键,返回请按q')
    82             else:
    83                 print('充值失败')
    84                 option_2 = input('继续充值请按任意键,返回请按q')
    85                 continue
    86     elif option == '6':
    87         break
    88     else:
    89         print('请正确输出选项!')
    90         continue
    91 print('谢谢光临!')
    View Code

    练习3

    交互式显示省市县三级联动

    答:

     1 dic = {
     2     "河北":{
     3         "石家庄" :["鹿泉","藁城","元氏"],
     4         "邯郸" : ["永年","涉县","磁县"]
     5     },
     6     "河南":{
     7         "郑州":["巩义","登封","新密"],
     8         "开封":["金明","鼓楼","通许"]
     9     },
    10     "山西":{
    11         "太原":["古交","清徐","阳曲"],
    12         "大同":["天镇","阳高","广灵"]
    13     }
    14 }
    15 back = 'n'
    16 while back != 'q':
    17     i = 0
    18     for item in dic.keys():
    19         i += 1
    20         print("%d.%s"%(i,item))
    21     option = input('请输入查询的地区:')
    22     if option not in dic.keys():
    23         print('请正确输出')
    24         back = input('退出请按q,按任意键继续')
    25     else:
    26         back_1 = 'n'
    27         while back_1 != 'q':
    28             i = 0
    29             for item in dic[option].keys():
    30                 i += 1
    31                 print("%d.%s"%(i,item))
    32             option_1 = input('请输入查询的地区:')
    33             if option_1 not in dic[option].keys():
    34                 print("请正确输出")
    35                 back_1 = input("返回请按q,退出请按Q,按任意键继续")
    36                 if back_1 == 'Q':
    37                     print("谢谢使用")
    38                     exit()
    39                 else:
    40                     pass
    41             else:
    42                 back_2 = 'n'
    43                 while back_2 != 'q':
    44                     i = 0
    45                     for item in dic[option][option_1]:
    46                         i += 1
    47                         print("%d.%s"%(i,item))
    48                     back_2 = input('返回请按q,退出请按Q')
    49                     if back_2 == 'Q':
    50                         print("谢谢使用")
    51                         exit()
    52                     else:
    53                         pass
    View Code

    作业

    1. 基于文件存储的用户登录程序(3次登录失败,锁定用户)

    答:

     1 db文件为
     2 
     3 sys|123456|0
     4 sy|123456|0
     5 
     6 
     7 f1 = open('db','r')
     8 date = f1.read()
     9 f1.close()
    10 user_info_list = []
    11 user_str_list = date.split('
    ')
    12 for item in user_str_list:
    13     temp = item.split('|')
    14     v = {
    15         'name':temp[0],
    16         'pwd':temp[1],
    17         'num':temp[2]
    18     }
    19     user_info_list.append(v)
    20 
    21 
    22 back = 'n'
    23 while back != 'q':
    24     user_name = input('请输出用户名:')
    25     import getpass
    26     user_pwd = getpass.getpass('请输出密码:')
    27     option = '0'
    28     for item in user_info_list:
    29         if user_name in item['name']:
    30             option = '0'
    31             user_num = int(item['num'])
    32             if user_num < 3:
    33                 if user_pwd == item['pwd']:
    34                     print('登录成功!')
    35                     item['num'] = 0
    36                     exit()
    37                 else:
    38                     item['num'] = user_num + 1
    39                     option = '1'
    40                     break
    41             else:
    42                 print('用户被锁!')
    43                 exit()
    44         else:
    45             option = '1'
    46     if option == '1':
    47         print('用户名密码或错误!')
    48     else:
    49         pass
    50     back = input('按q退出,任意键继续!')
    51 
    52 
    53 user_str_list = []
    54 for item in user_info_list:
    55     temp = "%s|%s|%s"%(item['name'],item['pwd'],item['num'])
    56     user_str_list.append(temp)
    57 target = "%s
    %s"%(user_str_list[0],user_str_list[1])
    58 f2 = open('db','w')
    59 f2.write(target)
    60 f2.close()
    View Code

      

  • 相关阅读:
    XML 文档的结构
    java 事件机制
    Spring 中的 Resource和ResourceLoader
    Spring PropertyPlaceholderConfigurer
    生产者——消费者模型的java代码实现
    encodeURI() 函数概述
    ECMAScript 6
    node
    AJAX常见面试题
    AJAX(Asynchronous JavaScript and XML)
  • 原文地址:https://www.cnblogs.com/suiyang/p/6816126.html
Copyright © 2011-2022 走看看