第一章
变量的命名规则:
1, 变量由字母, 数字,下划线搭配组合而成
2, 不可以用数字开头,更不能是全数字
3,不能是Python的关键字, 这些符号和字母已经被Python占用, 不可以更改, 比如, if, while, break, continue等等
4,不要用中文
5,名字要有意义
6,不要太长
7, 区分大小写
大家约定俗成, 所有字母大写就是常量
#字符串的拼接
s1 = 'a ’
s2 = ‘bc’
print(s1 + s2)
a = 10
b = “10”
print(type(a)) #
print(type(b)) #
input获取到数据都是str类型的.
a = int(input(“请输入一个数字a:”)) # 1
b = int(input(“请输入一个数字b:”)) # 1
print(a + b) # 2
1, break: 立刻跳出循环. 打断的意思
2, continue: 停止本次循环, 继续执行下一次循环.
import random
n = random.randint(1, 100) # 1~100之间的随机整数.
print(n)
第二章
%s就是代表字符串占位符,除此之外,还有%d, 是数字占位符
name = input(“Name:”)
age = input(“Age:”)
job = input(“Job:”)
hobby = input(“Hobbie:”)
info = ‘’’
------------ info of %s ----------- #这里的每个%s就是一个占位符,本行的代表 后面拓号里的 name
Name : %s #代表 name
Age : %s #代表 age
job : %s #代表 job
Hobbie: %s #代表 hobbie
------------- end -----------------
‘’’ % (name,name,age,job,hobbie) # 这行的 % 号就是 把前面的字符串 与拓号 后面的 变量 关联起来
print(info)
name = “sylar”
print(f"{name}真是一个蠢蠢的小蠢蠢")
content = input(“请输入你的评论内容:”)
if “苍井空” in content:
print(“存在苍井空”)
else:
print(“不存在苍井空”)
判断一句话中是否包含了"苍井空"
结论:
- ascii : 8bit, 主要存放的是英文, 数字, 特殊符号
- gbk: 16bit, 主要存放中文和亚洲字符. 兼容ascii
- unicode: 16bit和32bit两个版本. 平时我们用的是16bit这个版本. 全世界所有国家的文字信息. 缺点: 浪费空间(传输和存储)
- utf-8 : 可变长度unicode, 英文: 8bit, 欧洲文字: 16bit, 中文24bit. 一般数据传输和存储的时候使用.
- 以上所有编码必须兼容ascii .
编码用encode() 解码用decode()
str:
索引就是下标, 切记, 下标从0开始
切片完整语法:
str[startstep]
start: 起始位置
end: 结束位置
step: 步长
切记, 字符串是不可变的对象, 所以任何操作对原字符串是不会有任何影响的
- upper(), 把字符串中所有的字母都变成大写. 主要使用在忽略大小写的时候用
- strip(), 默认去掉左右两端的空白, 包括n, t, 空格.
- replace(), 字符串替换
- split(), 字符串切割. 得到字符串列表
- join(), 把列表重新组合成字符串
- startswith(), 判断是否以xxxx开头
- find(), 查找xxxx
- count(), 数数, 查看xxx出现的次数
- isdigit(), 判断该字符串是否是由数字组成
- len(), 字符串长度, 它是一个内置函数, 直接len(数据)即可
s12 = “我叫{0}, 今年{2}岁了, 我喜欢{1}”.format(“周杰伦”, “周润发”, 28) # 指定位置
print(s12)
查找
s13 = "我叫sylar, 我喜欢python, java, c等编程语言."
ret1 = s13.startswith("sylar") # 判断是否以sylar开头
print(ret1)
ret2 = s13.startswith("我叫sylar") # 判断是否以我叫sylar开头
print(ret2)
ret3 = s13.endswith("语言") # 是否以'语言'结尾
print(ret3)
ret4 = s13.endswith("语言.") # 是否以'语言.'结尾
print(ret4)
ret7 = s13.count("a") # 查找"a"出现的次数
print(ret7)
ret5 = s13.find("sylar") # 查找'sylar'出现的位置
print(ret5)
ret6 = s13.find("tory") # 查找'tory'的位置, 如果没有返回-1
print(ret6)
ret7 = s13.find("a", 8, 22) # 切片找
print(ret7)
##大小写转换
print(s1) # 输出发现并没有任何的变化. 因为这里的字符串本身是不会发生改变的. 需要我们重新获取
ret1 = s1.capitalize()
print(ret1)
# 大小写的转换
ret = s1.lower() # 全部转换成小写
print(ret)
ret = s1.upper() # 全部转换成大写
print(ret)
# 应用, 校验用户输入的验证码是否合法
verify_code = "abDe"
user_verify_code = input("请输入验证码:")
if verify_code.upper() == user_verify_code.upper():
print("验证成功")
else:
print("验证失败")
ret = s1.swapcase() # 大小写互相转换
print(ret)
# 不常用
ret = s1.casefold() # 转换成小写, 和lower的区别: lower()对某些字符支持不够好. casefold()对所有字母都有效. 比如东欧的一些字母
print(ret)
s2 = "БBß" # 俄美德
print(s2)
print(s2.lower())
print(s2.casefold())
# 每个被特殊字符隔开的字母首字母大写
s3 = "sylar chuchu,baoheizi*展昭_麻花藤"
ret = s3.title() # Sylar chuchu,baoheizi*展昭_麻花藤
print(ret)
# 中文也算是特殊字符
s4 = "sylar最喜欢heihei_bao" # Sylar最喜欢Heihei_Bao
print(s4.title())
切换
"
ret = s5.center(10, "*") # 拉长成10, 把原字符串放中间.其余位置补*
print(ret)
# 去空格
s7 = " heihei bao haha "
ret = s7.strip() # 去掉左右两端的空格
print(ret)
ret = s7.lstrip() # 去掉左边空格
print(ret)
ret = s7.rstrip() # 去掉右边空格
print(ret)
# 应用, 模拟用户登录. 忽略用户输入的空格
username = input("请输入用户名:").strip()
password = input("请输入密码: ").strip()
if username == 'ren' and password == '123':
print("登录成功")
else:
print("登录失败")
s7 = "abcdefgabc"
print(s7.strip("abc")) # defg 也可以指定去掉的元素,
# 字符串替换
s8 = "bao_heihei_nezha_huhu"
ret = s8.replace('bao', '包') # 把bao替换成包
print(s8) # bao_heihei_nezha_huhu 切记, 字符串是不可变对象. 所有操作都是产生新字符串返回
print(ret) # 包_heihei_nezha_huhu
ret = s8.replace('i', 'SB', 1) # 把i替换成SB, 替换1个
print(ret) # bao_heSBhei_nezha_huhu
# 字符串切割
s9 = "bao_heihei_nezha_huhu"
lst = s9.split("_") # 字符串切割, 根据_进行切割
print(lst)
lst = ['周杰伦', '王力宏', '麻花藤']
s = "_".join(lst)
print(s) # 周杰伦_王力宏_麻花藤
s10 = """诗人
学者
感叹号
渣渣"""
print(s10.split("n")) # 用n切割
# 坑
s11 = "哈哈包黑黑呵呵包黑黑吼吼包黑黑"
lst = s11.split("银王") # ['', '哈哈', '呵呵', '吼吼', ''] 如果切割符在左右两端. 那么一定会出现空字符串.深坑请留意
print(lst)
len()是python的内置函数. 所以访问方式也不一样. 你就记着len()和print()一样就行了
语法:
for 变量 in 可迭代对象:
pass
1. append() 增加数据, insert() 插入
2. remove() 删除数据, pop()
3. list[index] = value 修改数据
4. for循环 循环查看
for item in lst:
循环
for i in range(len(lst)):
i
lst[i]
lst = ["周杰伦", "马虎疼", "疼不疼", "傻不傻"]
for i in range(len(lst)):
print(i, lst[i])
lst = ["小白", "小黑", "腾哥", "马总", "日天", "小白"]
c = lst.count("小白") # 查询太白出现的次数
print(c)
lst = [1, 11, 22, 2]
lst.sort() # 排序. 默认升序
print(lst)
lst.sort(reverse=True) # 降序
print(lst)
lst = ["小白", "小黑", "腾哥", "马总", "日天", "白天"]
print(lst)
lst.reverse()
print(lst)
l = len(lst) # 列表的长度
print(l)
元组
关于不可变, 注意: 这里元组的不可变的意思是子元素不可变. 而子元素内部的子元素是可以变, 这取决于子元素是否是可变对象.
元组中如果只有一个元素. 一定要添加一个逗号, 否则就不是元组
已知的可哈希(不可变)的数据类型: int, str, tuple, bool
不可哈希(可变)的数据类型: list, dict, set
dic = {}
dic['name'] = '周润发' # 如果dict中没有出现这个key, 就会新增一个key-value的组合进dict
dic['age'] = 18
print(dic)
# 如果dict中没有出现过这个key-value. 可以通过setdefault设置默认值
dic.setdefault('李嘉诚') # 也可以往里面设置值.
dic.setdefault("李嘉诚", "房地产") # 如果dict中已经存在了. 那么setdefault将不会起作用
删
ret = dic.pop("jay")
print(ret)
del dic["jay"]
print(dic)
# 清空字典中的所有内容
dic.clear()
改
dic = {"id": 123, "name": 'sylar', "age": 18}
dic1 = {"id": 456, "name": "麻花藤", "ok": "wtf"}
dic.update(dic1) # 把dic1中的内容更新到dic中. 如果key重名. 则修改替换. 如果不存在key, 则新增.
print(dic)
print(dic1)
查
print(dic['name'])
# print(dic['sylar']) # 报错
print(dic.get("ok"))
print(dic.get("sylar")) # None
print(dic.get("sylar", "牛B")) # 牛B
循环
for k in dic:
print(k)
print(dic.keys()) # dict_keys(['id', 'name', 'age', 'ok']) 不用管它是什么.当成list来用就行
for key in dic.keys():
print(key)
print(dic.values()) # dict_values([123, 'sylar', 18, '科比']) 一样. 也当list来用
for value in dic.values():
print(value)
print(dic.items()) # dict_items([('id', 123), ('name', 'sylar'), ('age', 18), ('ok', '科比')]) 这个东西也是list. 只不过list中装的是tuple
for key, value in dic.items(): # ?? 这个是解构
print(key, value)
# 解构
a, b = 1, 2
print(a, b)
(c, d) = 3, 4
print(c, d)
e, f = [1, 2, 3] # 解构的时候注意数量必须匹配
print(e, f)
set
s1 = {"刘能", "赵四", "皮长山"}
s2 = {"刘科长", "冯乡长", "皮长山"}
# 交集
# 两个集合中的共有元素
print(s1 & s2) # {'皮长山'}
print(s1.intersection(s2)) # {'皮长山'}
# 并集
print(s1 | s2) # {'刘科长', '冯乡长', '赵四', '皮长山', '刘能'}
print(s1.union(s2)) # {'刘科长', '冯乡长', '赵四', '皮长山', '刘能'}
# 差集
print(s1 - s2) # {'赵四', '刘能'} 得到第一个中单独存在的
print(s1.difference(s2)) # {'赵四', '刘能'}



