Python First Day

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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. 运算符

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(‘\\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的所有值}

答:

A = [11,22,33,44,55,66,77,88,99]
A1 = []
A2 = []
B = {‘k1‘:A1,‘k2‘:A2}
for item in A:
    if item < 66:
        A1.append(item)
    elif item == 66:
        pass
    else:
        A2.append(item)
print(B)

练习2

功能要求:

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

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

答:

goods = [
    {"name": "电脑", "price": 1999},
    {"name": "鼠标", "price": 10},
    {"name": "游艇", "price": 20},
    {"name": "美女", "price": 998},
]
amount = 2000
card = []
print(‘欢迎光临!‘)
while True:
    option = input(‘1.购物\\n2.查询购物车\\n3.结账\\n4.查询余额\\n5.充值\\n6.退出\\n请输入:\\n‘)
    if option == ‘1‘:
        for item in goods:
            print(item[‘name‘],item[‘price‘],‘元‘)
        type = ‘y‘
        while type != ‘q‘:
            res = input(‘请输出购买商品:‘)
            for item in goods:
                if res == item[‘name‘]:
                    card.append(item)
                    print(‘已加入购物车‘)
            type = input(‘按任意键继续购买,按q返回主页‘)
    elif option == ‘2‘:
        option_1 = ‘n‘
        while option_1 != ‘q‘:
            type = input(‘查看购物车请按1,删除商品请按2,按q键返回主页‘)
            if type == ‘1‘:
                for item in card:
                    print(item[‘name‘],item[‘price‘],‘元‘)
            elif type == ‘2‘:
                option_2 = ‘n‘
                while option_2 != ‘q‘:
                    res = input(‘请输入要删除的商品名:‘)
                    for item in card:
                        if res == item[‘name‘]:
                            card.remove(item)
                            print(‘删除成功‘)
                    option_2 = input(‘任意键继续删除,按q键返回‘)
            elif type == ‘q‘:
                option_1 = ‘q‘
            else:
                print(‘请正确输入‘)
    elif option == ‘3‘:
        num = 0
        for item in card:
            money = int(item[‘price‘])
            num += money
        if amount >= num:
            amount -=num
            print(‘已结账‘)
            card = []
        else:
            print(‘余额不足‘)
        option_1 = input(‘返回主页请按任意键,退出请按q‘)
        if option_1 == ‘q‘:
            break
        else:
            continue
    elif option == ‘4‘:
        amount_1 = str(amount)
        print(‘当前余额为:‘ + amount_1)
        option_1 = input(‘返回主页请按任意键,退出请按q‘)
        if option_1 == ‘q‘:
            break
        else:
            continue
    elif option == ‘5‘:
        option_2 = ‘n‘
        while option_2 != ‘q‘:
            money = input(‘请输出充值金额:‘)
            if money.isdigit():
                pass
            else:
                print(‘请正确输入!‘)
                continue
            option_1 = input(‘确认请按y,返回请按任意键!‘)
            if option_1 == ‘y‘:
                money = int(money)
                amount += money
                print(‘充值成功‘)
                option_2 = input(‘继续充值请按任意键,返回请按q‘)
            else:
                print(‘充值失败‘)
                option_2 = input(‘继续充值请按任意键,返回请按q‘)
                continue
    elif option == ‘6‘:
        break
    else:
        print(‘请正确输出选项!‘)
        continue
print(‘谢谢光临!‘)

练习3

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

答:

dic = {
    "河北":{
        "石家庄" :["鹿泉","藁城","元氏"],
        "邯郸" : ["永年","涉县","磁县"]
    },
    "河南":{
        "郑州":["巩义","登封","新密"],
        "开封":["金明","鼓楼","通许"]
    },
    "山西":{
        "太原":["古交","清徐","阳曲"],
        "大同":["天镇","阳高","广灵"]
    }
}
back = ‘n‘
while back != ‘q‘:
    i = 0
    for item in dic.keys():
        i += 1
        print("%d.%s"%(i,item))
    option = input(‘请输入查询的地区:‘)
    if option not in dic.keys():
        print(‘请正确输出‘)
        back = input(‘退出请按q,按任意键继续‘)
    else:
        back_1 = ‘n‘
        while back_1 != ‘q‘:
            i = 0
            for item in dic[option].keys():
                i += 1
                print("%d.%s"%(i,item))
            option_1 = input(‘请输入查询的地区:‘)
            if option_1 not in dic[option].keys():
                print("请正确输出")
                back_1 = input("返回请按q,退出请按Q,按任意键继续")
                if back_1 == ‘Q‘:
                    print("谢谢使用")
                    exit()
                else:
                    pass
            else:
                back_2 = ‘n‘
                while back_2 != ‘q‘:
                    i = 0
                    for item in dic[option][option_1]:
                        i += 1
                        print("%d.%s"%(i,item))
                    back_2 = input(‘返回请按q,退出请按Q‘)
                    if back_2 == ‘Q‘:
                        print("谢谢使用")
                        exit()
                    else:
                        pass

作业

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

答:

db文件为

sys|123456|0
sy|123456|0


f1 = open(‘db‘,‘r‘)
date = f1.read()
f1.close()
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)


back = ‘n‘
while back != ‘q‘:
    user_name = input(‘请输出用户名:‘)
    import getpass
    user_pwd = getpass.getpass(‘请输出密码:‘)
    option = ‘0‘
    for item in user_info_list:
        if user_name in item[‘name‘]:
            option = ‘0‘
            user_num = int(item[‘num‘])
            if user_num < 3:
                if user_pwd == item[‘pwd‘]:
                    print(‘登录成功!‘)
                    item[‘num‘] = 0
                    exit()
                else:
                    item[‘num‘] = user_num + 1
                    option = ‘1‘
                    break
            else:
                print(‘用户被锁!‘)
                exit()
        else:
            option = ‘1‘
    if option == ‘1‘:
        print(‘用户名密码或错误!‘)
    else:
        pass
    back = input(‘按q退出,任意键继续!‘)


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()


























































































































































































































































































































































































































































































































































































以上是关于Python First Day的主要内容,如果未能解决你的问题,请参考以下文章

003dayPython学习初始模块和字节码

Python初学者第二天

Python初学者第三天

Python First Week

python First day

Python First Day