day1:
变量:把程序运行过程中产生的中间值。暂时存储起来。方便后面的程序调用.
变量命名规范:
常量:所有字母大写
注释:
数据类型:
1. int 整数
2. str 字符串. 不会用字符串保存大量的数据 ,字符串由',"", ''', """组成
3. bool 布尔值. True, False 所有的空都是False。 非空都是True
4. list 列表(重点) 存放大量的数据
5. dict 字典 key: value 查找会比较快
6. set 集合 无序 不能重复
7. bytes 一堆字节。 我们程序处理的最小单位
8. tuple 元组 不可变的列表 输入:input()
循环:if elif else day2:
循环:while break终止 continue停止当前本次循环。 继续执行下一次循环
格式化输出:%s
运算符:优先级: ()-> not -> and -> or
1 and 2 取2
1 or 2 取 1
0 and 2
0 and 1
字符串编码
1. ASCII 8bit 1byte
2. GBK 16bit 2byte
3. Unicode 32bit 4byte
4. UTF-8 可变长度的unicode
英文: 8bit 1byte
欧洲文字; 16bit 2byte
中文 :24bit 3byte
判断:in / not in day3:
1.索引
字符串中每个字符的位置顺序
索引从0开始. 程序员数数从0开始
s[索引] 获取到字符串s中的索引位置的数据
s[:] 从头到尾
s[-1] 反向索引
s[3:1:-1]) 从右往左切片
s[start: end] 从start切到end。 但是不包含end. 顾头不顾尾
s[start: end: step] step步长。 每隔xx个取1个。 默认是1 如果step是-1 从右往左取值 2.切片
s[start: end: step]
从start开始到end结束。 但是取不到end. 每step个取一个 3.字符串操作
1.upper() 全部转化成大写字母
2.strip() 去掉左右两段的空白(空格,\n, \t)
3.replace(old, new) 字符串替换
4.split() 切割. 得到的结果是一个列表.
5.startswith() 判断是否以xxx开头
6.find() 查找。如果找到了。 返回索引。如果找不到返回-1
7.len() 内置函数,求字符串长度
8.center()
9.count()计数
10.find()查找 没有返回-1
11.index()索引 没有报错
12.isalpha() 检测字符串是否只由字母组成
13.isdigit() 是否只有阿拉伯数字
14.isnumeric() 检测字符串是否只由数字组成。这种方法是只针对unicode对象
15.isalnum() 检测字符串是否由字母和数字组成。 4. 迭代
for 变量 in 可迭代对象:
循环体(break,continue)
要求掌握
# 把任意字符串中的每一个字符打印出来
# s = "胡辣汤好喝,疙瘩汤也好喝,所以再来一碗"
# index = 0
# while index < len(s): # 0 1 2...19
# print(s[index])
# index += 1 day4:
1、List:增删改查
1. 新增:
append(元素) 添加到末尾
insert(index, 元素) 把元素插入到对应索引的位置
extend(可迭代对象) 迭代添加
2.删除:
pop() 弹出最后一个 pop(1)弹出指定元素
pop(index) 弹出指定位置的元素
remove() 移除xxx元素
clear()清空列表
del[6:2:1] 索引和切片
3. 改: 根据索引修改.
4. 查询: for循环
for el in lst:
for i in range(len(lst)):
2. 列表的常用功能
1.count()
2.index()
3.sort() 排序
4.sort(reverse = True)倒序
5.reverse() 翻过来
3. 列表的嵌套
降维操作。 一层一层的找
4. 元组。相关操作
tuple: 只读列表。由() 组成。特点:不可变
如果只有一个元素。 末尾加逗号("sdd",)
不可变: 元素内部第一层元素的内存地址 day5:
字典中的key是不能重复的。 存储是依靠着key来计算的
字典是使用hash算法计算key的哈希值. 使用哈希值来存储数据 哈希算法得到的是一个唯一的数字(可能是正数, 可能是负数, 很大或者很小)
哈希算法是无序的 字典中的key必须是可哈希的, 不可变的就是可哈希的 不可变: 字符串, 元组, int, bool
可变的: list, dict, set
【增删改查】
1. 增加
dic[key] = value
setdefault(key, value)
给dict中的Value添加新值不覆盖>>>>>>>>>>>>>>? 2.删除
pop(key)
popitem() 随机删除
del dic[key]
clear()
3.修改
dic[key] = value
dic1.update(dict2)
dict修改key>>>>>>>>>>>>>>>>>>>>>>>>>>>
a = {"yuntian":"zero", "Alex":"Li"}
a["Yuntian"] = a.pop("yuntian")
print(a)
# a.update(Yuntian = a.pop("yuntian")) 4. 查询
dic[key] 可能会报错
dic.get(key)
dic.setdefault()
dic.values()显示所有values的值,像列表但不是列表
dic.items()所有键对值
字典的迭代:
for k, v in dic.items():
print(k, v)
for k in dic:
dic[k] # lst = [11,22,33,44,55,66,77,88,99]
# dic = {}
# for el in lst:
# if el > 66:
# dic.setdefault("key1", []).append(el)
# else:
# dic.setdefault("key2", []).append(el)
# print(dic) day6:
is 判断内存地址是否一致
== 判断内容是否一致
python2中用的是ascii
python3用的是unicode
字符串如果传输:
encode(编码) 结果是bytes类型
接受到bytes之后。 需要解码
decode(编码). 结果是字符串
s.encode("utf-8")
# 缓存: 为什么有缓存。 缓存有什么问题,数据安全.google(自己盖发电厂。)
# 数据是保存在硬盘上。 硬盘的读写速度是很慢的. 72mb/s
# 把数据存储在内存中进行缓存。 1g/s
# 加大数据吞吐量
# 分布式. 异地部署 day7:
1. join: 把列表中的数据进行拼接。 拼接成字符串,如果有数字类型,可以用str强制转换成字符
"_".join(lst)
2. 关于删除:
列表和字典在循环的时候都不能删除。
把要删除的内容保存在新列表中。 循环新列表。 删除老列表(字典)
# 把要删除的内容记录在一个新列表中
# new_lst = []
# for el in lst:
# new_lst.append(el)
# # 循环这个新列表. 删除原来的列表
# for el in new_lst: # 不会导致循环的列表的元素移动问题
# lst.remove(el) # 注意, 删除的是老列表 # lst = ["王大锤", "王有才", "张小白", "刘大哥"]
# # 删除掉姓王的
# new_lst = [] # 装要删除的内容
# for el in lst:
# if el.startswith("王"): # 判断字符串是否以xxx开头
# new_lst.append(el)
# # 执行删除
# for el in new_lst:
# lst.remove(el) 3. fromkeys
dict.fromkeys(iter, value)
把可迭代对象进行迭代。 和后面的value组合成键值对 返回新字典
坑1: 返回新字典。不会改变原来的字典 [看代码]
dic = {}
dic.fromkeys(xxx, xxx)
print(dic) # {}
坑2: 【看代码】
d = fromkeys(xxx.[])
字典中的所有的value都是同一个列表
4. set集合
特点:无序不重复。 内部元素必须可哈希
1. add() 添加
让列表变成元祖set(lst)
5. 深浅拷贝(画图理解)
1. = 赋值操作没有创建新的对象。 此时 两个变量指向的是同一个内存地址
2. copy() [:] 浅拷贝。 拷贝第一层内容
3. 深拷贝
import copy
copy.deepcopy() 深度拷贝。 把对象内部的所有内容都拷贝一份
作用: 快速创建对象 day8:
文件操作【重点来了】:
1. 文件操作 open() 文件句柄
open()打开一个文件, 获取的是文件句柄
read()
readline() 读取第一行
readlines() 一次性全都读取出来, 返回的是列表
write() for line in f: 遍历文件中的内容 路径的问题:
1. 绝对路径
从磁盘根目录寻找 windows下用的就是c,d,e,f, linux: \user\bin\xxxx
2. 相对路径
从当前程序运行的文件夹内寻找 ../ 表示上一层文件夹
n \t 转义字符。 有固定的含义的。 推荐用r
open(r"E:\哈哈\t\n\护士模特少妇.txt", mode="r", encoding="utf-8")
2. 文件操作的相关模式Mode
r: 只读
w: 只写
a: 追加
r+:
w+:
a+: 非文本文件
rb
wb
ab r+b
w+b
a+b 3. 相关操作
1. seek()移动光标(重点)
seek(0) 开头
seek(0,2) 移动到末尾
2. tell() 获取光标所在的位置
3. truncate(3) 截断文件从头截取到3
# seek(参数1, 参数2)
# 参数1表示的是偏移量,移动多少个单位
# 参数2表示从什么位置进行偏移
# 0: 开头
# 1: 当前位置
# 2: 末尾 # 把光标移动到文件的开头: seek(0)
# 把光标移动到末尾: seek(0, 2) 4. 文件修改
with open(xxx) as 句柄, \
open(xxxxx)as xxx
不用手动关闭文件句柄 文件修改的步骤
1. 从源文件中读取数据。
2. 写入到副本文件中
3. 删除源文件
4. 把副本重命名成源文件
import os
os.remove()
os.rename() <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<必须要掌握>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
# 文件句柄是一个可迭代对象
# f = open("胡辣汤", mode="r", encoding="utf-8")
# for line in f: # 读取文件中的内容。 一行一行的读取。 每次读取的内容交给前面的变量
# print(line.strip())
1、文本文件的复制(04)>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
f1 = open(r"c:\日记本.txt", mode="r", encoding="utf-8")
f2 = open(r"d:\日记本.txt", mode="w", encoding="utf-8")
for line in f1: # 从f1中读取数据
f2.write(line) # 写入到f2中
f1.close()
f2.close()
2、文本文件修改>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
import os # 导入os模块
import time # 时间模块
with open("唐诗", mode="r", encoding="utf-8") as f1,\
open("唐诗_副本", mode="w", encoding="utf-8") as f2:
for line in f1:
line = line.replace("善良", "sb")
f2.write(line)
time.sleep(5)
os.remove("唐诗") # 删除源文件
time.sleep(5)
os.rename("唐诗_副本", "唐诗") # 把副本改名成源文件
3、文本文件里列表变成字典>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
'''
编号,名称,价格,数量,仓库,phone
1,榴莲,500,60000,1号仓库,10010
2,苹果,700,70000,2号仓库,10086
1,榴莲,500,60000,1号仓库,155
2,苹果,700,70000,2号仓库,166
'''
'''变成
[{'编号': '1', '名称': '榴莲', '价格': '500', '数量': '60000', '仓库': '1号仓库', 'phone': '10010'},
{'编号': '2', '名称': '苹果', '价格': '700', '数量': '70000', '仓库': '2号仓库', 'phone': '10086'},
{'编号': '1', '名称': '榴莲', '价格': '500', '数量': '60000', '仓库': '1号仓库', 'phone': '155'},
{'编号': '2', '名称': '苹果', '价格': '700', '数量': '70000', '仓库': '2号仓库', 'phone': '166'}]
'''
f = open("水果.data", mode="r", encoding="utf-8")
titles = f.readline().strip() # 读取第一行 id,name,price,num
t_list = titles.split(",") # 【id,name,price,num】
lst = []
for line in f: # "1,苹果,500,60000" {id:1,name:liulian, num:xx, price:xxx}
dic = {}
ll = line.strip().split(",")
for i in range(len(t_list)):
dic[t_list[i]] = ll[i]
lst.append(dic)
f.close()
print(lst)

Python(1-8天总结)的更多相关文章

  1. Python中的多进程与多线程(一)

    一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...

  2. Python高手之路【六】python基础之字符串格式化

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...

  3. Python 小而美的函数

    python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况   any any(iterable) ...

  4. JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议

    软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...

  5. 可爱的豆子——使用Beans思想让Python代码更易维护

    title: 可爱的豆子--使用Beans思想让Python代码更易维护 toc: false comments: true date: 2016-06-19 21:43:33 tags: [Pyth ...

  6. 使用Python保存屏幕截图(不使用PIL)

    起因 在极客学院讲授<使用Python编写远程控制程序>的课程中,涉及到查看被控制电脑屏幕截图的功能. 如果使用PIL,这个需求只需要三行代码: from PIL import Image ...

  7. Python编码记录

    字节流和字符串 当使用Python定义一个字符串时,实际会存储一个字节串: "abc"--[97][98][99] python2.x默认会把所有的字符串当做ASCII码来对待,但 ...

  8. Apache执行Python脚本

    由于经常需要到服务器上执行些命令,有些命令懒得敲,就准备写点脚本直接浏览器调用就好了,比如这样: 因为线上有现成的Apache,就直接放它里面了,当然访问安全要设置,我似乎别的随笔里写了安全问题,这里 ...

  9. python开发编译器

    引言 最近刚刚用python写完了一个解析protobuf文件的简单编译器,深感ply实现词法分析和语法分析的简洁方便.乘着余热未过,头脑清醒,记下一点总结和心得,方便各位pythoner参考使用. ...

  10. 关于解决python线上问题的几种有效技术

    工作后好久没上博客园了,虽然不是很忙,但也没学生时代闲了.今天上博客园,发现好多的文章都是年终总结,想想是不是自己也应该总结下,不过现在还没想好,等想好了再写吧.今天写写自己在工作后用到的技术干货,争 ...

随机推荐

  1. .net正在终止线程异常

    try{sting host = context.Request.UrlReferrer.Host;if ( 程序判断){ context.Response.Clear();context.Respo ...

  2. 使用NSURLConnection实现大文件断点下载

    使用NSURLConnection实现大文件断点下载 由于是实现大文件的断点下载,不是下载一般图片什么的.在设计这个类的时候本身就不会考虑把下载的文件缓存到内存中,而是直接写到文件系统. 要实现断点下 ...

  3. 批量备份mysql数据库(shell编程)

    #!/bin/bash DBPATH=/mysqlbak MYUSER=root MYPASS= SOCKET=/var/lib/mysql/mysql.sock MYCMD="mysql ...

  4. PHP:通过MVC,实现第三方登录(百度)

    这里,仓鼠将手把手记录下来实现第三方登录的流程,这里以百度为例 百度开发者中心-官方网址:传送门. 所有第三方接口都不支持本地调试,只有真实的项目和服务器才有可能申请成功. 所以申请的资料全部都要填写 ...

  5. SAP S/4HANA CDS View的访问控制实现:DCL介绍

    来自我的同事Xu Miles Authorization Objects are business concept, they are distinguished by business scenar ...

  6. UI层实现

    领域驱动设计实践 —— UI层实现   目录 1. User Interface 2. Controller 3.  DTO 4.  infrastructure层的公共组件 5. UI层类图 6. ...

  7. 迷宫问题求解——C++

    迷宫问题思路 根据昨天的博客,有如下几种解决方案 克鲁斯卡尔 ,为避免死循环,需要设定优化路径的次数. Prim,为避免死循环,需要设定优化路径的次数,暂定200次. BFS , 实现简单,无死循环. ...

  8. Codeforces Round #435 (Div. 2)【A、B、C、D】

    //在我对着D题发呆的时候,柴神秒掉了D题并说:这个D感觉比C题简单呀!,,我:[哭.jpg](逃 Codeforces Round #435 (Div. 2) codeforces 862 A. M ...

  9. Windows pycharm Terminal使用Anaconda 的Prompt

    从Stack Overflow上找到的方法如下 在Settings->Terminal->Shell path 改成:cmd.exe "/K" "C:\Use ...

  10. leetcode 78. Subsets 、90. Subsets II

    第一题是输入数组的数值不相同,第二题是输入数组的数值有相同的值,第二题在第一题的基础上需要过滤掉那些相同的数值. level代表的是需要进行选择的数值的位置. 78. Subsets 错误解法: cl ...