python 第一周
2023-08-03 本文已影响0人
云顶天宫写代码
一、基础入门
- 计算机是什么
计算机最底层是 电子电路. 只能识别两个数 0 1
- python的简介
解释型语言. 弱类型语言
- 安装
- hello world
print("你好啊. 我是周润发")
- 变量(命名规则)
命名规则;
1. 由数字, 字母, 下划线组成
2. 不能数字开头. 更不能是纯数字
3. 不能是关键字
4. 不要太长
5. 不要用中文
6. 区分大小写
7. 要有意义
8. 驼峰和下划线命名
常量: 全部字母大写常量. 约定俗成
- 数据类型
1. int整数. +-*/% //整除, > < >= <= !=
2. str字符串. 用',",''',""" 引起来的都是字符串 +字符串拼接 *重复次数
3. bool 布尔值. 只有True和False两个值
- 用户交互(input)
变量=input("提示语") 变量是字符串类型, 字符串=> 数字使用 int(str)
- if判断
最基本用法
if 条件判断:
代码块
运行流程. 当条件是真. 执行代码块
if 条件:
代码块1
else:
代码块2
执行流程: 当条件成立. 执行代码块1. 否则, 执行代码块2. 二选一
if 条件1:
代码块1
elif 条件2:
代码块2
.....
else:
代码块n
执行流程: 自行补全
二、循环相关
- 循环. while循环
while 条件:
代码块(循环体)
执行流程:
1. 判断条件是否为真. 如果真. 执行代码块
2. 再次判断条件是否为真......
3. 当条件为假.执行else 跳出循环. 循环结束
- 格式化输出
%s: 字符串的占位符, 可以放置任何内容(数字)
%d: 数字的占位符
- 运算符
逻辑运算:
and 并且的意思. 左右两端的值必须都是真. 运算结果才是真
or 或者的意思. 左右两端有一个是真的. 结果就是真. 全部是假. 结果才能是假
not 非的意思. 原来是假. 现在是真. 非真即假, 非假既真
break 结束循环. 停止当前本层循环
continue 结束当前本次循环. 继续执行下一次循环
三、字符串
- 编码
1. 最早的计算机编码是ASCII. 美国人创建的. 包含了英文字母(大写字母, 小写字母). 数字, 标点等特殊字符!@#$%
128个码位 2**7 在此基础上加了一位 2**8
8位. 1个字节(byte)
2. GBK 国标码 16位. 2个字节(双字节字符)
3. unicode 万国码 32位, 4个字节
4. utf-8: 英文 8 bit 1个字节
欧洲文字 16bit 2个字节
中文 24bit 3个字节
8bit = 1 byte
1024 byte = 1kb
1024 kb = 1mb
1024mb = 1gb
1024gb = 1tb
- 基本数据类型的概述
int 整数
str 字符串, 存储少量的数据
bool 布尔
list 列表, ["周杰伦", "刘德华", ]
tuple 元组. 只读列表, 不能改
dict 字典; 一对一对的存储数据. key:value {"听妈妈的话":"周杰伦", '稻香':"周杰伦"}
set 集合. 存储不重复的内容
- int, bool, str
int 方法操作:
bit_length() 求二进制长度
bool: 类型转换
1. 你想转换成什么. 就用什么把目标包裹起来
2. 带空的是False, 不带空的True
str
1. str索引和切片:
索引:起始下标是0(从左到右), (-1)从右到左
切片: s[起始位置: 结束位置: 步长]
特点:顾头不顾尾
2. 字符串的常用操作: 常用方法
字符串不可变.
1. upper() 转换成大写
2. strip() 去掉空格
3. replace() 替换
4. split() 切割
7. startswith() 判断是否以xxx开头
8. find() 查找. 找不到返回-1
9. len() 内置函数. 直接使用. 不用点操作 求字符串的长度
3. 迭代字符串
for 变量 in 可迭代对象:
循环体
else:
4. 字符串格式化
# 模板语法定义 "%[+][-][width][.precison]type" % 待格式化数据
# type 常用的类型 %s 字符串 %d或 %i 十进制整数 %f 浮点型
print("|%+10d|" % 30)
# | +26| # 正整数右对齐,正数加正号
print("|%-10d|" % 30)
# |26 | # 正整数左对齐,正数无符号
print("|% 10d|" % 30)
# | 26| # 正整数右对齐,正数前加空格
print("|%010d|" % 30)
# 如未指定浮点数精度,默认保留6位小数,其余均用空格填充(如指定0则用0填充);若width小于浮点数的数位则width无效。
print("|%+10f|" % 3.14)
#| +3.140000| # 正浮点数加正号右对齐,小数部分以0填充
print("|%-10f|" % 3.14)
#|3.140000 | # 正浮点数左对齐,小数点后为空格
print("|% 10f|" % 3.14)
#| 3.140000| # 正浮点数右对齐,浮点数前为空格
print("|%010f|" % 3.14)
#|003.140000| # 正浮点数右对齐,小数点前以0填充
4、列表
- list(增删改查)
列表可以装大量的数据. 不限制数据类型. 表示方式:[] 方括号中的每一项用逗号隔开
列表和字符串一样.也有索引和切片
常用的功能:
1. 增: append() extend() insert(索引位置,元素)
2. 删:remove() pop(索引位置)
3. 改: 索引修改
4. 查: for循环
常用方法:
1. len()
2. count()
3. sort() 排序
- list的嵌套
[1, "周杰伦", True, False, ["可口可乐", "雪碧", "芬达"] ]
- range()
数数
有一个参数:结束为止
两个参数: 1. 起始位置, 2.结束位置
三个参数: 1. 起始位置, 2. 结束位置. 3.步长
5、字典
1. dict
用大括号{} 括起来. 内部使用key:value的形式来保存数据
{'jay':'周杰伦', "jj":'林俊杰'}
注意:字典的key必须是可哈希的. 不可变的,元组、字符串、数字。 value 没有限制
2. 增删改查
1. dict[不存在的key] = value, setdefault()
2. pop(key). del dict[key]. popitem(), clear()
3. dict[存在的key] = 新值, d1.update(d2) 把d2的k-v更新到d1中
4. get(key, 默认值), setdefault(), dict[key]
3. 字典的常用方法
1. keys() 返回所有字典的key的集合(高仿列表)
2. values() 返回所有的value的集合
3. items() 返回键值对. 元组
解构:
a, b = (1, 2)
6、 浅拷贝、深拷贝
# 深拷贝 和 浅拷贝
# 浅拷贝 重新分配一块内存 新的对象是原对象中的子对象的引用
# 深拷贝 重新分配一块内存 创建新的子对象拷贝到新对象。 新对象和源对象无关联
old = [1,[1,2,3],3]
new = old.copy() # 或者 list(old) old[:]
new[0] = 3
new[1][0] =3
print('拷贝后:')
print(old)
print(new)
# 结论 list 第一层实现了深拷贝 二层之后是不拷贝(对象引用)
# is 和 == 的区别 is 身份运算符
list1 = [1, 2, 3]
list3 = list1
list2 = list1[:] # 浅拷贝
print(list2)
print("list1 == list2 ?",list1 == list2)
print("list1 is list2 ?",list1 is list2)
print("list1 == list3 ?",list1 == list3)
print("list1 is list3 ?",list1 is list3)
dict1 = {1:[1,'w'], "第二个":0, 3:98}
dict2 = dict(dict1)
dict2[1][0]=3
dict2["第二个"] = 5
print(dict1,dict2)
print("dict1 == dict2 ?",dict1 == dict2)
print("dict1 is dict2 ?",dict1 is dict2)
# 使用深拷贝
import copy
old = [1,[1,2,3],3]
new = copy.deepcopy(old)