Python First Day
A. python介绍
 - 可以减少开发成本,代码开源
 - 运行速度慢
 B. python和其它语言对比
  - C语言 :        编译 -> 机器码 -> 计算机
  - 其它高级语言:  编译 -> 字节码 -> 机器码 -> 计算机
 C. python种类
  - CPython     代码 -> C字节码 -> 机器码 (一行一行)
  - PYPY(特殊)代码 -> C字节码 -> 机器码 全部转换完 -> 执行 
  - 其它Python  代码 -> 其它字节码 -> 机器码
 
 D. python基础
  a. Python规则
   1. 安装: python解释器
   2. 写程序
    C:\Python35\python.exe D:\1.txt
    # a. 打开文件,读取文件内容
      # b. 词法分析,语法分析
      # c. 字节
     - 解释器
     windows:
     方法一:C:\Python35\python.exe D:\1.txt
          
     方法二:C:\Python35\python.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. 运算符

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('\n')
    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\n%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)
练习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.购物\n2.查询购物车\n3.结账\n4.查询余额\n5.充值\n6.退出\n请输入:\n') 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('谢谢光临!')
练习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
作业
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('\n') 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\n%s"%(user_str_list[0],user_str_list[1]) 58 f2 = open('db','w') 59 f2.write(target) 60 f2.close()
 
                    
                     
                    
                 
                    
                
 
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号