Python 21天入门计划:基础语法详解及实战练习指南
文章目录
前言
Python是一种强大且易于学习的编程语言。通过这个21天的计划,我们将逐步深入基础语法与课外练习。无论你是初学者还是有一定基础的开发者,这个计划都将帮助你巩固和扩展你的Python知识。
在学习本篇之前,我们先复习一下前面的内容:
day1:Python下载和开发工具介绍
day2:数据类型、字符编码、文件处理
基本概念
Python是一种强类型的动态语言。强类型意味着变量类型在运行时是固定的,动态语言意味着变量类型可以在运行时改变。
注释与字符串
'''
这是一个多行注释
可以跨越多行
'''
数据类型
列表(List)
过滤与排序
循环
for i in range(3):
print(i)
else:
print("循环结束")
for i in range(3):
if i == 1:
break
print(i)
for i in range(3):
if i == 1:
continue
print(i)
flag = False
for i in range(3):
for j in range(3):
if i == 1 and j == 1:
flag = True
break
if flag:
break
import sys
sys.exit()
字典(Dictionary)
字典循环
for i in info:
print(i, info[i])
for k, v in info.items():
print(k, v)
运算符
列表与字典的复制
a = [1, 2, 3, ['zxy', '20']]
b = a.copy()
a[3][1] = 'alex'
# b 也会跟着变,除了这个 list 里面的 list 其他的都不会跟着变。
acount = {'name': 'zxy', 'info': [20000, 50]}
acount2 = acount.copy()
acount2['name'] = 'alex'
print(acount, acount2)
acount['info'][1] += 200
print(acount, acount2)
字典拾遗
info = {}
info.fromkeys([1, 2, 3], 'test')
# 输出: {1: 'test', 2: 'test', 3: 'test'}
info.fromkeys([1, 2, 3], {})
# 输出: {1: {}, 2: {}, 3: {}}
三元运算
a = 3
b = 5
c = a if a < b else b #如果a小于b把a赋值给c,否则把b赋值给c
# 只能if else,不能多个条件,而且else后面只能一个单纯的值
c = a if a < b else (3 if 3 < 5 else 9) # 这样也是可以的
进制
八进制是逢八进一 OCT八进制
十六进制0123456789ABCDEF hex 十六进制 BH 0x
128 64 32 16 8 4 2 1 换成二进制
1 0 1 1 1 0 1 0 186
11 10 四位一个十六进制
B A 换算成十六进制
元组
name = ('zxy', '20')
list(name) # 转换成list
tuple(name) # 转换成tuple
集合
# 查找元素 'sb' in linux
linux = {'alex', 'jack', 'sb', 'lijie'}
python = {'alex', 'eric', 'lijie'}
print(linux.intersection(python)) # 交集
print(linux & python) # 交集
print(linux.difference(python)) # 差集
print(linux - python) # 差集
linux.difference_update(python) # 差集,并赋值给原来的集合
print(linux, python)
print(linux.union(python)) # 并集
print(linux | python) # 并集
linux.update(python) # 并集,但会改变原来的集合
print(linux)
print(linux.symmetric_difference(python)) # 对称差集
print(linux ^ python) # 对称差集
linux.clear() # 清空
linux.add('haha') # 增加
linux.discard('sb') # 删除,元素不存在不报错
linux.pop() # 随机删除
#linux.remove('alex') # 删除,元素不存在会报错
print(linux.issubset(python)) # 子集
print(linux.issuperset(python)) # 超集
不可变集合
a = frozenset([1, 2, 3]) # 不可变集合,所以他可以作为字典的key
字符串操作
str
IN = '12345'
OUT = 'abcde'
trans_table = str.maketrans(OUT, IN)
print(name.translate(trans_table)) # 做一个str翻译
常用字符串方法
name = 'alexeeee'
print(name.capitalize()) # 首字母大写
print(name.casefold()) # 大写全变小写
print(name.center(50, '*')) # 字符填充
print(name.count('e', 4)) # 从第四个开始统计e
print(name.count('a'))
print(name.endswith('e')) # 以什么结尾
name2 = 'alex\teee'
print(name2.expandtabs(10)) # 设置tab键长度
print(name.find('e')) # 返回第一个索引位置
print(name.find('ee', 3)) # 从第几个找起
print(name.find('yy'))
name3 = '{name},{age}'
print(name3.format(name='alex', age=20)) # 格式化输出
name5 = 'my name is {0}, age is {1}'
print(name5.format('alex', '20')) # 格式化输出
name4 = 'name:%s, age:%s'
print(name4 % ('alex', '20'))
print(name3.format_map({'name': 'alex', 'age': '20'})) # 以字典格式传入
print(name.index('l')) # 返回索引值
print('1a'.isalnum()) # 判断所有的字符是不是数字
print(name.isdecimal()) # 判断是不是十进制数字
print('10'.isdecimal()) # 判断是不是正整数
print(name.isdigit()) # 判断是不是数字
print(name.isalpha()) # 是不是字母
print('2a'.isidentifier()) # 是不是合法的关键字
print('A'.islower()) # 是不是小写
print('a'.isupper()) # 是不是大写
print('123.0'.isnumeric()) # 是不是数字
print('a'.isprintable()) # 是不是可打印的
print('a '.isspace()) # 是不是空格
print(name.title()) # 首字母大写
print('Alex'.istitle()) # 判断是不是首字母大写
print('*****'.join(name)) # 分割成字符串
print('.'.join(['alex', 'age', 'oldboy'])) # 把列表分割成字符串
print(name5.ljust(20, '-')) # 左对齐
print(name5.rjust(20, '-')) # 右对齐
print('ALEX'.lower()) # 变小写
print('alex hah'.rfind('a')) # 从右边开始找
print("My name".lstrip('My')) # 脱左边
print(name.swapcase()) # 大小写互换
字符编码的转换
在Python 2中是ASCII码。 在Python 3中,默认编码是Unicode,解释器读取文件默认是以UTF-8格式。 如果在Windows里保存的文件格式是GBK,读取时需要解码。
#!/usr/bin/env python
# coding:utf-8
name = '中国' # utf-8格式编码
print(name)
print([name]) # 十六进制
print([name.decode('utf-8')]) # .encode('gbk')
gbka = name.decode('utf-8').encode('GBK') # 转换成gbk
print(gbka.decode('GBK').encode('gb2312')) # 乱码处理
print(gbka.decode('GBK')) # 自动转换
字符编码长度
数据类型
注意点
- Unicode,UTF-8,GBK都是编码规则。
- 内存存储Unicode,解码,编码,省硬盘和流量。
- 程序执行前和执行后的两个状态:编码(明文和二进制的数字)。
学习例子
#!/usr/bin/env python
# coding:utf-8
menu = {
'北京': {
'海淀': {
'五道口': {
'soho': {},
'网易': {},
'google': {}
},
'中关村': {
'爱奇艺': {},
'汽车之家': {},
'youku': {},
},
'上地': {
'百度': {},
},
},
'昌平': {
'沙河': {
'老男孩': {},
'北航': {},
},
'天通苑': {},
'回龙观': {},
},
'朝阳': {},
'东城': {},
},
'上海': {
'闵行': {
"人民广场": {
'炸鸡店': {}
}
},
'闸北': {
'火车站': {
'携程': {}
}
},
'浦东': {},
},
'山东': {},
}
last_layer = [] # 记录输入的上一层所有的地址
current_layer = menu # 当前层
while True:
for key in current_layer:
print(key) # 打印当前层
choice = input(">>:").strip() # 输入你要进入的层,并且脱去空格
if len(choice) == 0:
continue # 如果输入为空,跳出当前循环
if choice in current_layer: # 如果输入的值在字典里面
last_layer.append(current_layer) # 记录上一层的位置
current_layer = current_layer[choice] # 进入下一层
if choice == 'b': # 如果输入为b,删除上一层,并且进入上一层
if last_layer: # 如果列表不为空
current_layer = last_layer.pop()
if choice == 'q':
break # 退出程序
结语
通过这个21天的Python计划,我们涵盖了基础语法与课外练习。希望这些内容能帮助你更好地理解和使用Python。继续学习和实践,你将成为一名优秀的Python开发者!🚀🚀
作者:互联网搬砖工老肖