Python学习笔记Day01~03

基础语法

1.数据类型

  • string

      name.capitalize()       # 句首字母大写
      name.count('o')         # 计数
      name.center(50, '-')    # 居中
      name.endswith('ng')     # 结尾
      name.startswith('my')   # 开头
      name.find('Long')
    
      name.lower()            # 小写
      name.swapcase()         # 大小写转换
      name.title()            # 句首字母大写
    
      '+'.join(['1', '2', '3'])  # 连接符
      name.lstrip()           # 去左边空格或回车
      name.strip()            # 去空格和回车
      name.split('n', 1)      # 分割提取,后为提取个数-1
      name.rsplit('n')        # 分割提取
    
      p = str.maketrans('abcdef', '123456')  # 替换加密方法
      name.translate(p)
      name.replace('m', 'M', 1)  # 替换
    
      # 判断
      name.isalnum()          # 阿拉伯字符或数字
      name.isalpha()          # 英文字符
      name.isdigit()          # 整数
      name.isdecimal()        # 十进制
      name.islower()          # 小写
      name.isidentifier()     # 判读是不是一个合法的标识符
      name.isnumeric()
      name.istitle()
      name.isprintable()      # tty file ,drive file
      name.isupper()
    
      name.expandtabs(tabsize=30)
      name[name.find("name"):]
      name.format(name='alex', year=23)
      name.format_map({'name': 'alex', 'year': 12})
    
      name.ljust(50, '*')
      name.rjust(50, '-')
    
      'alex lil'.rfind('l')
      '1+2
    +3+4'.splitlines()
      'lex li'.zfill(50)
    

2.for,while,if

3.list,dict,set,tuple

  • list

      # 列表切片
      names[0:-1:2]   # 含首不含尾
      names[::2]
      names[:]
      
      range(1,10,2)   # 自动数字列表
    
      for i in names:
          print(i)
    
      import copy
      name2 = copy.deepcopy(names)    # 深拷贝
    
      names.append("LeiHaidong")      # 追加
      names.insert(1, "ChenRonghua")  # 插入
    
      names.remove("ChenRonghua")     # 删除指定值
      del names[1]                    # 根据索引删除
      names.pop(1)                    # 根据索引删除,返回值
    
      names.index("XieDi")            # 获取索引
    
      names.count("ChenRonghua")      # 统计某个元素在列表中出现的次数
      names.clear()                   # 清空列表
      names.reverse()                 # 反转列表
      names.sort()                    # 对原列表进行排序
      names.extend(names2)            # 合并列表,追加到结尾
    

http://www.runoob.com/python3/python3-list.html

  • dict

      info = {'1': 2, '2': 3, '3': 4}
      info['1']           # 查找,没有则报错
      info.get('2')       # 查找,没有则返回None
    
      info.values()       # 取所有值
      info.keys()         # 取所有key
      info.items()        # 取key和value
      info.setdefault('1', 1) # 有则不变,无则替换
      info['5']=info.pop('1') # 修改键,删除原来键并将值赋给新键
    
      info.update(date)   # 合并字典,添加元素
    
      for i in info:      # 循环 i为key
          print(i, info[i])
    
  • set

      # 重复key自动过滤,无序
      set1 = set((1, 2, 45, 5, 5, 1))
      set2 = {1, 2, 5, 45}
      # set的关系测试、
      set3 = set1 & set2          # 交集 &
      set1.intersection(set2)     # 交集 &
      set1.union(set2)            # 并集 |
      set1.difference(set2)       # 差集 -
      set1.issubset(set2)         # 子集
      set1.issuperset(set2)       # 父集
      set1.symmetric_difference(set2) # 对称差集  ^
      set1.isdisjoint(set2)       # 无交集
      set1.discard(set2)          # 删除
    
      set1.add(999)               # 添加一项  无insert
      set1.update([888, 777, 555])    # 添加多项
      set1.remove(555)            # 删除,不存在报错
      set1.pop()                  # 随机删除并返回该值
      set1.discard(888)           # 有则删除,不存在不报错
    

IO操作

with open('text.txt', 'w', encoding="utf-8") as f:
    f.write('我王境泽就算饿死
')

# 操作方式
    w:以写方式打开,
    a:以追加模式打开 (从 EOF 开始, 必要时创建新文件)
    r+:以读写模式打开
    w+:以读写模式打开 (参见 w )
    a+:以读写模式打开 (参见 a )
    rb:以二进制读模式打开
    wb:以二进制写模式打开 (参见 w )
    ab:以二进制追加模式打开 (参见 a )
    rb+:以二进制读写模式打开 (参见 r+ )
    wb+:以二进制读写模式打开 (参见 w+ )
    ab+:以二进制读写模式打开 (参见 a+ )

f.read([size])      # size为读取的长度,以byte为单位
f.readline([size])  # 读取一行
f.readlines([size]) # 分行读取,将每一行作为一个元素放进list, size是表示读取内容的总长
f.write(str)        # 把str写到文件中,不自动换行
f.writelines(seq)   # 把seq的内容全部写到文件中(多行一次性写入)
f.close()           # 关闭文件
f.flush()           # 实时刷新,把缓冲区的内容写入硬盘
f.fileno()          # 返回一个长整型的"文件标签"
f.isatty()          # 文件是否是一个终端设备文件(unix系统中的)
f.tell()            # 返回文件操作标记的当前位置,以文件的开头为原点
f.next()            # 返回下一行数据,并将光标移动到下一行。for … in file就是调用next()函数来实现遍历的。
f.seek(offset,whence)      # 将文件操作标记移到指定位置。默认从开头来计算的,一般为正数。whence参数为0表示从头开始计算,1表示以当前位置为原点计算,2表示以文件末尾为原点进行计算
# 需要注意,如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾。
f.truncate([size])  # 把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。如果size比文件的大小还要大,依据系统的不同可能是不改变文件,也可能是用0把文件补到相应的大小,也可能是以一些随机的内容加上去。

http://www.runoob.com/python3/python3-inputoutput.html

格式化输出/交互

  • 第一种%s

      info = '''
      -------- info of  %s  -----
      Name:%s
      Age:%d
      Job:%s
      Salary:%s
      ''' % (name, name, age, job, salary)
    
  • 第二种.format 指定key

      info2 = '''
      -------- info of {_name}  -----
      Name:{_name}
      Age:{_age}
      Job:{_job}
      Salary:{_salary}
      '''.format(_name=name,
                 _age=age,
                 _job=job,
                 _salary=salary)
    
  • 第三种.format 按顺序

      info3 = '''
      -------- info of {0} -----
      Name:{0}
      Age:{1}
      Job:{2}
      Salary:{3}
      '''.format(name, age, job, salary)
      print(info3)
    

函数的参数与调用

test(y=2,x=1) # 关键字调用:与形参顺序无关
test(1,2)  # 位置参数调用:必须与形参一一对应
test(3, z=2, y=6)   # 关键字调用必须在位置调用之后
  • *args:接受N个位置参数,转换成元组形式

      def test1(x, *args):
          print(x)
          print(args)
    
      test1(1, 2, 3, 4, 5, 6, 7)  # 按顺序赋值, 1传给x,其他以元组传给*args
      test(*[1, 2, 4, 5, 5])  # args=tuple([1,2,3,4,5])
    
  • **kwargs:接受N个关键字参数,转换成字典的方式

      def test4(name, age=18, *args, **kwargs):
          print(name)
          print(age)
          print(args)
          print(kwargs)
    
      test4('alex', age=34, sex='m', hobby='tesla')
    

进度条输出

import sys,time

for i in range(20):
    sys.stdout.write("#")
    sys.stdout.flush()
    time.sleep(0.1)

作业

作业1:博客

作业2:编写登录接口

输入用户名密码
输入正确后显示欢迎界面
输错三次锁定

作业3:多级菜单

三级菜单
可依次选择进入各子菜单
需要列表、字典知识点

作业4:购物车

用户入口:
    1.txt.商品信息存在文件里
    2.用户记录保存在文件里
商家入口:
    1.txt.添加商品
    2.修改商品名称
原文地址:https://www.cnblogs.com/JeromeLong/p/10632416.html