概述
本节参考博客
备注:本系列博客除特别标注,默认的环境为python3
学习方法
1. 上课
上课听课的时候只认真听讲,跟着老师走,不要做笔记,如果有重要的知识点,在练习时间再做对应的练习,把重要的知识点在一个txt文档中标注下。
2. 课下
课下及时闭眼回顾当前小节,及之前小节所讲的内容概要,将知识提纲汇总一下,在心里多熟悉几遍。如果能回想一遍更细的知识点更好。
3. 回家:
回家后要及时更新博客,把当天的课堂内容已文字的形式 + 代码示例 记录下来,方便后期查询翻阅。尽量回忆知识内容,如果实在回忆不起来的情况下,在看知识点的相关视频(非特殊情况下不要从头到尾重看视频,原因:浪费时间且由于不连续看会造成效率低下)
博客自我要求:
覆盖课上的全部知识点 + 扩充自己要看的内容(在老师教的知识的基础上的延伸扩展)
写当天博客之前,要把上一节的博客内容先看一遍,以巩固所需知识
博客中的内容必须是全部搞明白的,如果有搞不明白的要及时标注,一定要全部搞明白!!
博客内容:精简全面,轻重突出,详略得当,实用为主(没必要啰嗦的地方就不要啰嗦)。
4. 作业
做作业要放在写博客之后,搞明白了课上的知识内容后,通过作业来练习、巩固所学知识。切记不要先写作业后写博客~
遇到不会写的作业如何下手:
中文描述清楚代码逻辑流程(时间允许的情况下可以画逻辑图)
相关的知识点不会,可以先绕过(pass)
将整个作业模块化,先做会的地方,再做不会的地方,最后组装在一起。
作业内容:
代码作业 + 当天的博客一篇
5. 博客园介绍
文章分类:
文章:只有给别人URL,对方才可以看。
随笔:发布后所有人都可以看。
日记:只有自己可见。
python介绍
1. Python介绍
python相比于其他语言的优点:程序员减少开发成本,可以直接利用很多现成的模块和库。
2. Python和其他语言对比
目前的变成语言可以分为两类:C语言 和 其他高级语言 ,之所以叫高级语言是因为开发者在开发过程中无需考虑内存地址分配和释放等底层的逻辑操作实现,而C语言编程过程是需要考虑这些的。
C语言:代码---(编译解释)--> 机器码(CPU可执行)
其他高级语言:代码---(编译解释)--> 特定语言的字节码---(编译解释)--> 机器码
3. Python种类
Cpython: 代码 -> C字节码 -> 机器码 (代码一行一行的按此顺序编译解释成CPU可以执行的机器码并执行)
pypy: 代码 -> C字节码 -> 机器码 (一次性批量操作将代码按此顺序编译解释成CPU可以执行的机器码并执行)
其他python: 代码 -> 特定语言的字节码 -> 机器码
Python基础
1. 安装python,其实安装的是python解释器
2. python解释器执行过程:
C:Python35python.exe D:1.txt
# a. 打开文件,读取文件内容
# b. 词法分析,语法分析
# c. 编译解释成C字节码(.pyc文件)
3. 解释器执行方式
windows:
C:Python35python.exe D:1.txt
C:Python35python.exe
Linux:
C:Python35python.exe D:1.txt
C:Python35python.exe
头部#!/usr/bin/python
chmod 755 1.py
./1.py
4. python默认规范
所有python程序都已.py 结尾
5. 字符串编码介绍
编码发展史:ascii----->unicode------>utf-8------->gbk,gb2312
ascii:计算机发展之初,只需要表示最多256个英文字符,ascii码用一个字节来表示一个字符,一个字节有8位,所以ascii可以表示全部的英文字符。
ascii示例:字母a-->00000010 字母s-->00000100
Unicode(也称为万国码):为了支持更多的语言:用至少2个字节(即至少16位)来表示一个字符,缺点:浪费存储空间
Unicode示例:字母a-->00000000 00000010 汉字中-->10000000 00000000 00000010
utf-8:对万国码压缩 ,即英文字母还用ascii存储,中文等其他字符用Unicode存储,优点:节省了存储空间
utf-8示例:字母a-->00000010 汉字中-->10000000 00000000 00000010
gbk,gb2312 :gbk对utf-8做了压缩,gb2312又对gbk增加了对繁体字的支持,对于一个中文汉字:龙
utf-8,需要使用三个字节来表示 (24位) 10000000 00000000 00000010
gbk, 需要使用二个字节来表示 (16位) 00100110 00000010
在python2中,python2中 gbk转换到utf8,需要先进过unicode,即:gbk--->unicode--->utf8
字符编码深入了解,请参考:
补充:
#!/usr/bin/python
# -*- coding:utf-8 -*-
# 1. py2的str => py3中bytes
v1 = '理解'
print(v1,type(v1))
# 2. decode转换
"""
py2: str -> unicode
py3: byte -> str
"""
result = v1.decode(encoding='utf-8')
print(result,type(result))
# 3. py2的unicode => py3中str
v2 = u'理解'
print(v2,type(v2)) # py2的unicode => py3中str
# 4. encode转换
"""
py2: unicode -> str
py3: str -> byte
"""
result = v2.encode(encoding='utf-8')
print(result,type(result))
"""
结论:
py2中:字符串是字节,unicode才是字符串
py3中:字符串就是字符串,字节就是字节
"""
6. Python编码相关
文件编码:指文件内容以什么编码的形式存储,在notepad++ 和 pycharm中可以设置存储使用的文件编码。
Python解释器编码
py3 默认的解释器编码是:utf-8)
>>> sys.getdefaultencoding()
'utf-8'
py2默认的解释器编码是:acsii
>>> sys.getdefaultencoding()
'ascii'
显示指定python解释器编码,在#!/usr/bin/env python后添加:
# -*- coding:utf-8 -*-
只有解释器编码和文件编码都一致的情况下,才不会出现乱码。
7. python开发IDE
建议使用pycharm
使用方法:
1. new project
2. new 创建文件夹
3. new 创建py文件
4.运行程序
在py文件中右键, run xx.py debug xx.py(先打断点,然后以debug模式运行)
5,使用技巧:
设置pycharm的文件编码(defaultsett中找关键字:coding)
设定文件模板 (defaultsett中找关键字: template)
设定ctl + 鼠标--->改变大小(defaultsett中找关键字:mouse)
改python解释器(setting 搜索interpreter)
快捷键:
Ctrl + ? 注释/取消注释
8. 注释
单行注释用#
多行注释用""" """,另外""" """ 还可以格式化输出。
>>> info="""hi,
... wo shi wuxiaoyu
... wo zai xue python
... bye bye"""
>>> print info
hi,
wo shi wuxiaoyu
wo zai xue python
bye bye
>>>
9 .pyc文件,是编译后生成的字节码文件
先在硬盘找同名的.pyc文件,如果找到直接载入,否则从新编译解释运行。
没有py文件,只有.pyc文件也是可以直接运行的。
变量及输入输出
1. 变量命名规则
由字母、数字、下划线组成,但不能以数字开头,不能使用python内置的关键字(这个使用pycharm可以自动做到变量语法检测)
关键字如下:
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
由名称组成,多个名词之间下划线分割
以下变量不建议使用:
ABC = 123
temp1 =
姓名 = 'alex' #不能以中文命名变量
2. 输入,输出
Python3中用input()取代了python2.7中的raw_input(),与python2.7中的raw_input()相同,input()函数不管你输入什么返回的都是字符串
input() 括号中的内容是输入的提示参数:
v = input(">>>")
密码输入:
import getpass
v = getpass.getpass('>>>')
print(v)
getpass模块在pycharm中无法运行,要再windows的cmd命令行中
条件语句 和 循环语句
1. 条件语句
形式一:
if 条件:
成功走这里
else:
失败走着
应用:
import getpass
name = input("请输入姓名:")
pwd = getpass.getpass('请输入密码:')
if name == 'alex' and pwd == 'sb':
print('欢迎登陆')
else:
print('滚蛋')
形式二:
if 条件:
...
elif 条件:
...
else:
...
应用:
username = input('>>>')
if username == 'alex':
print('普通管理')
elif username == 'oldboy':
print('超级管理')
elif username == '郭少龙':
print('人')
elif username == '刘一':
print('装逼犯')
else:
print('再见...')
print('end')
补充:
***三元表达式
res = 条件成立返回值 if 条件 else 条件失败返回值
x=10
y=2
if x > y:
print(x)
else:
print(y)
res=x if x > y else y ##三元表达式
print(res)
*** if的条件表达式可以如下这样写:
if 0 < chosen <= len(goods_list)
2. 循环语句
while 条件:
.....
continue # 立即开始下次循环(忽略本次循环后面的代码,不再执行)
break # 跳出所有循环
else:
pass
备注:
break 和continue 只和当前循环有关系,循环嵌套的时候,和上一层的循环没关系
while 循环列表得自己写计数器(一般情况下for都可以处理)
while循环也有else 预计(只有没被break的时候才执行else分支下的代码)====》for循环也是!作用:例如判断ftp发送文件是否完全发送成功
例子:
for i in [1,2,3,43,4]:
for j in [11,22,33,44]:
break
break只是跳出第二层for循环,不会跳出外面的for循环
3. 练习:
1、使用while循环输入 1 2 3 4 5 6 8 9 10
2、求1-100的所有数的和
3、输出 1-100 内的所有奇数
4、输出 1-100 内的所有偶数
5、求1-2+3-4+5 ... 99的所有数的和
6、用户登陆(三次机会重试)
运算符
1、算数运算:
2、比较运算:
3、赋值运算:
4、逻辑运算:
5、成员运算:
举例
a. 赋值运算符
i += 1
# i = i + 1
b. 比较运算符
if 1 == 1 or 1 > 2 and 1 == 4:
print('正确')
else:
print('错误')
执行结果是:正确
整个表达式 是 1 ==1 or 表达式2 ,后面的 and 是 (1 > 2 and 1 == 4) 这个表达式的值
or and 没有优先级,一个个的往后看,如果想设置优先级,请用括号。
c. 成员运算符
content = "Alex 前几天去泰国玩姑娘,一不小心染上了病,他的内心活动是,真该多来几个"
if "前几天去" in content:
print('包含敏感字符')
else:
print(content)
Python数据类型
1. 整数 int
- 创建
a = 123
a = int(123)
- 字符串转换成整数
age = "18"
new_age = int(age)
2. 布尔值
- 创建
a = True
b = False
- 转换
- 数字转换,只有0是False,其他True
- 字符串, 只有""是False,其他True
- 待续...
在python中 None 空 0 这三者的布尔值是False
3. 字符串
- 创建
a = "alex"
a = str('alex')
- 转换
age = 19
new_age = str(age)
- 字符串常用功能:
字符串的拼接
字符串格式化
判断子序列是否在其中
移除空白
字符串分割
长度(字符)
索引
切片
- 字符串的拼接
name = 'alex'
gender = '女'
new_str = name + gender
print(new_str)
- 字符串格式化
# 占位符,
# name = '我叫李杰,性别:%s,我今年%s岁,我在说谎!'
# new_str = name %('男',19,)
# print(new_str)
name = '我叫李杰,性别:%s,我今年%s岁,我在说谎!' %('男',19,)
print(name)
备注:%s 占位符和括号中的字符串数量要一致
- 判断子序列是否在其中
content = "Alex 前几天去泰国玩姑娘,一不小心染上了病,他的内心活动是,真该多来几个"
if "前几天去" in content:
print('包含敏感字符')
else:
print(content)
- 移除空白
val = " alex "
print(val)
# new_val = val.strip() # 左右
# new_val = val.lstrip()# 左边
new_val = val.rstrip() # 右边
print(new_val)
- 分割
user_info = "alex sb123 9"
# v = user_info.split('|')
# v = user_info.split('|',1)
v = user_info.rsplit(' ',1)
print(v)
Python的str类有split方法,但是这个split方法只能根据指定的某个字符分隔字符串,如果要同时指定多个字符来分隔字符串,该怎么办呢?
幸运的是python的re模块中提供的split方法可以用来做这件事情,如下代码示例:
import re
re.split('; |, ',str)
举例:
>>> a='Beautiful, is; better*thannugly'
>>> import re
>>> re.split('; |, |*|n',a) #|代表或的关系,对* 进行了转义
['Beautiful', 'is', 'better', 'than', 'ugly']
- 长度(字符)
备注:len python3是字符长度;python2 是字节长度
val = "李杰sb"
v = len(val)
print(v)
- 索引
val = "李杰sb"
v = val[0]
print(v)
打印字符串中所有字符
val = input('>>>')
i = 0
while i < len(val):
print(val[i])
i += 1
- 切片
name = '我叫李杰,性别我今年岁,我在说谎!'
print(name[0])
print(name[0:2])
print(name[5:9])
print(name[5:])
print(name[5:-2])
print(name[-2:])
4. 列表
创建:
a = ['alex','狗','eric',123]
a = list(['alex','狗','eric',123])
- 列表常用功能:
索引
切片
追加
插入
更新
删除(列表和字典都支持pop操作)
长度
循环
包含
索引:
val = a[0]
切片:
a = ['alex','狗','eric',123]
v = a[0::2]
print(v)
追加:
a = ['alex','狗','eric',123]
a.append('xxoo')
print(a)
插入:
a = ['alex','狗','eric',123]
a.insert(0,'牛')
print(a)
更新:
a = ['alex','eric','狗','eric',123]
a[1] = '阿斯顿发送到'
print(a)
删除:
a = ['alex','eric','狗','eric',123]
# a.remove('eric')
del a[0]
print(a)
长度:
val = len(a)
For循环:
a = ['alex','eric','狗','eric',123]
for item in a:
print(item)
# break
# continue
in判断:
if 'al' in a:
pass
if 'al' in a[0]:
pass
5. 字典操作
- 创建
v = {'name': 'alex',
'password': '123123',
}
字典常用操作
索引
新增
删除
循环(键、值、键值对)
长度
# 索引获取值
n = v['name']
print(n)
# 增加,无,增加;有,修改
v['age'] = 19
print(v)
# 删除
del v['name']
print(v)
# 循环(键、值、键值对)
for item in v.keys():
print(item)
for item in v.values():
print(item)
for key,val in v.items():
print(key,val)
#长度
print(len(user_dict))
6. 字典和列表相互嵌套
说明:字典和列表是容器,可以相互嵌套,数字和字符串不是容器
user_dict = {
'k1': 'v1',
'k2': {'kk1':'vv1','kk2':'vv2'},
'k3': 123,
'k4': ['alex','eric',['a','b','c'],'李杰',{'k11':'vv1'}],
}
user_dict['k4'][2].append('123') #给列表追加元素
user_dict['k4'][4]['n'] = '过啥龙' #给字典追加元素
7. 应用示例:
示例一:
###python3.5的环境
user_list = [
{'name':'alex','pwd':'123123','times':1},
{'name':'eric','pwd':'123123','times':1},
{'name':'tony','pwd':'123123','times':1},
]
user = input('用户名:')
pwd = input('密码:')
for item in user_list:
if user == item['name'] and pwd == item['pwd']:
print('登录成功')
break
示例二:
db
alex|123123|3
eric|123123|3
login.py
#!/usr/bin/python
# -*- coding:utf-8 -*-
# 1. 打开并读取文件内容
f1 = open('db','r')
data = f1.read()
f1.close()
# 2. 格式化,列表中嵌套字典
print(data)
user_info_list = []
user_str_list = data.split('n')
user_str_list = [ x for x in user_str_list if x != ''] ##linux上加这样去除['alex|123123|1', 'eric|123123|2', '']中的空字符串
for item in user_str_list:
temp = item.split('|')
v = {
'name': temp[0],
'pwd': temp[1],
'times': temp[2]
}
user_info_list.append(v)
user_info_list[1]['times'] = 3
print(user_info_list)
# 3. 列表中嵌套的字典
# 4. 重新写入文件
target = """alex|123123|3neric|123123|3"""
f2 = open('db','w')
f2.write(target)
f2.close()
作业
1. 基于文件存储的用户登录程序(3次登录失败,锁定用户)
先补充示例
2. 练习题:
2.1 元素分类
有如下值集合 v1 = [11,22,33,44,55,66,77,88,99,90],
将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}
v2 = {'k1': [],'k2':[] }
2.2. 用户交互,显示省市县三级联动的选择
dic = {
"河北": {
"石家庄": ["鹿泉", "藁城", "元氏"],
"邯郸": ["永年", "涉县", "磁县"],
}
"河南": {
...
}
"山西": {
...
}
}
for v in dic.keys():
print(v)
inp = input('>>>')
dic[inp]
备注:
1.输入后去掉左右两边的空格 strip()
最后
以上就是含糊豆芽为你收集整理的python基础内容表达式_01-python基础之python介绍、三元表达式的全部内容,希望文章能够帮你解决python基础内容表达式_01-python基础之python介绍、三元表达式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复