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

  

原文地址:https://www.cnblogs.com/suiyang/p/6816126.html