学习Python(一)
1 安装python软件
1.1 Python环境搭建
如果是32位机器,安装python-3.6.3.exe
如果是64位机器,安装python-3.6.3-amd64.exe
具体步骤略
安装结束后,启动cmd命令行
在DOS提示符后输入python,如果进入python命令行,则说明python已经安装完成
编写简单的hello程序
print('hello') |
如果要退出python命令行,按Ctrl+Z则可以退出,可以回到DOS命令行
1.2 执行简单的python程序
通过文件的方式执行python程序
创建一个后缀名为*.py的文件(比如是1_2hello.py)
print('hello') |
要执行该程序,需要通过命令行进入文件所在的目录
cd /d 文件所在的目录 python hello.py |
2 python基础语法
2.1 每行的最后一个符号
C/C++/Java中,每行的最后一个符号是分号
Python中每行的最后一个符号不需要加分号
2.2 数据类型
C:int、long、short、float、double、char、*、[ ]、struct、union、enum
Java:
基本类型:byte、short 、int、long、float、double、char、boolean
引用类型:[ ]、class、interface
Python:
基本类型:int(整型)、float(浮点型)、str(字符串)、bool(布尔型)、complex(复数)
复杂类型:list(列表)(中括号)、tuple(元组)(小括号)、set(集合)(大括号)、dict(字典)(大括号)
type()函数可以查看变量的数据类型
a = 2 print(a) print(type(a)) # <class 'int'> b = 3.14 print(b) print(type(b)) # <class 'float'> c = True # False print(c) print(type(c)) # <class 'bool'> d = 'hello' # "world" print(d) print(type(d)) # <class 'str'> e = 3-2j print(e) print(type(e)) # <class 'complex'> |
f = [1, 3, 5, 7, 9] print(f) print(type(f)) # <class 'list'> g = (1, 3, 5, 7, 9) print(g) print(type(g)) # <class 'tuple'> h = {1, 3, 5, 7, 9} print(h) print(type(h)) # <class 'set'> i = { 'name':'zhangsan', 'age':23, 'height':172.5, 'married':True, 'pets': ['wangcai', 'xiaoqiang', 'ruhua'] } print(i) print(type(i)) # <class 'dict'> |
2.3 条件判断
if elif else
注意:if elif else后面没有大括号{},而是冒号(:),并且下一行需要缩进 (建议使用一个TAB键来缩进)区分是哪一层
a = 5 if a > 2: print('a is big') else: print('a is small') |
b = 0 if b > 0: print('b is positive') elif b == 0: print('b is zero') else: print('b is negative') |
Python中没有switch…case
2.4 循环
循环语句包括:for、while
Python中没有do…while
a = 3 while a < 8: print(a) a += 1 # python中没有a++ |
# 从1到10 # for (i = 0; i < 10; i++) for i in range(10): print(i) |
# 从2到10 # for (i = 2; i < 10; i++) for i in range(2, 10): print(i) |
# 从2到10 间隔为2 # for (i = 2; i < 10; i += 2) for i in range(2, 10, 2): print(i) |
2.5 四则运算
print(7+3) # 10 print(7-3) # 4 print(7*3) # 21 print(7**3) # 幂 print(7/3) # 2.3333333333333335 浮点除 print(7//3) # 2 整除 print(7%3) # 1 求余数 |
2.6 注释
单行注释
C/C++/Java://
Python:#
多行注释
C/C++/Java:/* … */
Python:’’’ … ‘’’ “”” … “””
2.7 函数
在python中,需要通过关键字def关键字定义函数
def 函数名(函数参数): 函数体 函数返回值 |
def add(a = 4, b = 9): result = a + b return result |
ret = add(3, 8) # a = 3, b = 8 print(ret) # 11 ret = add(3) # a = 3, b = 9 print(ret) # 12 ret = add() # a = 4, b = 9 print(ret) # 13 ret = add(b = 8) # a = 4, b = 8 print(ret) # 12 |
Python的函数可以有多个返回值
def div(a, b): result1 = a // b result2 = a % b return result1, result2 |
ret1, ret2 = div(18, 4) print('ret1 = ', ret1) print('ret2 = ', ret2) |
2.8 列表
list1 = [1, 2, 3, 5, 8, 13, 21] print(list1) # 通过如下方式访问列表中的元素 print(list1[2]) # 3 print(list1[0]) # 1 print(list1[-1]) # 21 print(list1[-3]) # 8 # 可以设置间隔 print(list1[1:3]) # [2, 3] 从第1个开始到第3个结束 包含第1个 不包含第3个 print(list1[1:-1]) # [2, 3, 5, 8, 13] 从第1个开始到倒数第1个结束 包含第1个 不包含倒数第1个 print(list1[1:]) # [2, 3, 5, 8, 13, 21] 从第1个开始到最后 包含第1个 print(list1[:3]) # [1, 2, 3] 从头开始到第3个结束 不包含第3个 print(list1[:]) # [1, 2, 3, 5, 8, 13, 21] 从头开始到最后 print(list1[1:6:2]) # [2, 5, 13] 从第1个开始到第6个结束 包含第1个 不包含第6个 间隔为2 print(list1[::2]) # [1, 3, 8, 21] 从头开始到最后结束 间隔为2 print(list1[::-1]) # 从后往前 |
可以增加、删除、修改列表中的元素
增加元素
# 增加元素 # append() 在列表后面增加元素 list1 = [1, 2, 3, 5, 8, 13, 21] list1.append(34) # [1, 2, 3, 5, 8, 13, 21, 34] print(list1) |
# 尝试使用append()添加多个元素时会出现问题 list1 = [1, 2, 3, 5, 8, 13, 21] #list1.append(34, 55) # append()只能接受一个参数 list1.append([34, 55]) # 尝试把34和55合在一个列表中作为一个参数 print(list1) # [1, 2, 3, 5, 8, 13, 21, [34, 55]] print(len(list1)) # 8 |
# 使用extend()函数可以解决上面的问题 list1 = [1, 2, 3, 5, 8, 13, 21] list1.extend([34, 55]) print(list1) # [1, 2, 3, 5, 8, 13, 21, 34, 55] print(len(list1)) # 9 |
# 使用insert()往列表前面或中间插入元素 list1 = [1, 2, 3, 5, 8, 13, 21] list1.insert(0, 9527) print(list1) # [9527, 1, 2, 3, 5, 8, 13, 21] |
删除元素
# remove() 根据值来删除元素 list1 = [1, 2, 3, 5, 8, 13, 21] list1.remove(5) print(list1) # [1, 2, 3, 8, 13, 21] |
# pop() 根据索引来删除元素 有返回至 list1 = [1, 2, 3, 5, 8, 13, 21] ret = list1.pop(5) print(ret) # 13 print(list1) # [1, 2, 3, 5, 8, 21] |
# del关键字 根据索引来删除元素 无返回值 list1 = [1, 2, 3, 5, 8, 13, 21] del list1[5] print(list1) # [1, 2, 3, 5, 8, 21] |
排序
前提是列表中每个数的数据类型必须一致
如果列表中的数值是乱序的,可以通过sort()进行排序
# 排序 list1 = [13, 3, 21, 8, 5, 1, 2] print(list1) # 正向排序(从小到大) list1.sort() print(list1) # [1, 2, 3, 5, 8, 13, 21] # 反向排序(从大到小) list1.sort(reverse = True) print(list1) # [21, 13, 8, 5, 3, 2, 1] |
反向操作。把列表的序列颠倒
使用reverse()函数
# 反向操作 list1 = [13, 3, 21, 8, 5, 1, 2] print(list1) list1.reverse() print(list1) # [2, 1, 5, 8, 21, 3, 13] |
清空列表。使用clear()函数
# 清空列表 list1.clear() print(list1) |
思考下面的问题
list1 = [1, 2, 3] list2 = list1 print(list1) print(list2) |
解决方法:浅拷贝
import copy list1 = [1, 2, 3] list2 = copy.copy(list1) list2[2] = 4 print(list1) # [1, 2, 3] print(list2) # [1, 2, 4] |
思考下面的问题
list1 = [] list11 = [1,2,3] list12 = [4,5,6] list13 = [7,8,9] list1.extend([list11, list12, list13]) list2 = copy.copy(list1) list11[2] = 4 print(list1) print(list2) |
解决方法:深拷贝
list1 = [] list11 = [1,2,3] list12 = [4,5,6] list13 = [7,8,9] list1.extend([list11, list12, list13]) list2 = copy.deepcopy(list1) list11[2] = 4 print(list1) print(list2) |
2.9 元组
tuple1 = [1, 2, 3, 5, 8, 13, 21] print(tuple1) # 通过如下方式访问列表中的元素 print(tuple1[2]) # 3 print(tuple1[0]) # 1 print(tuple1[-1]) # 21 print(tuple1[-3]) # 8 # 可以设置间隔 print(tuple1[1:3]) # [2, 3] 从第1个开始到第3个结束 包含第1个 不包含第3个 print(tuple1[1:-1]) # [2, 3, 5, 8, 13] 从第1个开始到倒数第1个结束 包含第1个 不包含倒数第1个 print(tuple1[1:]) # [2, 3, 5, 8, 13, 21] 从第1个开始到最后 包含第1个 print(tuple1[:3]) # [1, 2, 3] 从头开始到第3个结束 不包含第3个 print(tuple1[:]) # [1, 2, 3, 5, 8, 13, 21] 从头开始到最后 print(tuple1[1:6:2]) # [2, 5, 13] 从第1个开始到第6个结束 包含第1个 不包含第6个 间隔为2 print(tuple1[::2]) # [1, 3, 8, 21] 从头开始到最后结束 间隔为2 print(tuple1[::-1]) # 从后往前 |
不能往tuple中增加元素
# tuple不能增加元素 tuple1 = (1, 2, 3, 5, 8, 13, 21) tuple1.append(34) |
不能从tuple中删除元素
# tuple不能删除元素 tuple1 = (1, 2, 3, 5, 8, 13, 21) tuple1.remove(5) |
不能修改tuple中的元素
# tuple不能修改其中的元素 tuple1 = (1, 2, 3, 5, 8, 13, 21) tuple1[2] = 99 |
2.10 文件
通过open()函数打开一个文件,返回file对象。
通过file对象的close()方法关闭文件。
# 打开一个文件 # 参数1 文件所在的路径 # 绝对路径 # 相对路径 # 参数2 文件的打开方式 共12种 # r w a r+ w+ a+ rb wb ab rb+ wb+ ab+ f = open('tmp.txt', 'r') # 对文件内容进行操作 # .... f.close() |
比如,读取文件的内容:
通过read()读取内容
f = open('tmp.txt', 'r') # 对文件内容进行操作 #ret = f.read(5) # 读取5个字节 ret = f.read() # 读取全部内容 print(ret) f.close() |
逐行读取文件的内容
f = open('tmp.txt', 'r') # 逐行读取文件的内容 while True: ret = f.readline() if not ret: break print(ret) f.close() |
把内容写入文件中
f = open('tmp2.txt', 'w') # 往文件中写入内容 f.write('hello\n') f.write('world') f.close() |
3 爬虫案例1:访问百度帖吧
假设我们要访问的帖吧是:柯南吧
留意头几页的URL地址:
https://tieba.baidu.com/f?kw=%E6%9F%AF%E5%8D%97&pn=0
https://tieba.baidu.com/f?kw=%E6%9F%AF%E5%8D%97&pn=50
https://tieba.baidu.com/f?kw=%E6%9F%AF%E5%8D%97&pn=100
https://tieba.baidu.com/f?kw=%E6%9F%AF%E5%8D%97&pn=150
其中,kw参数%E6%9F%AF%E5%8D%97可以通过站长工具http://tool.chinaz.com/tools/urlencode.aspx 进行url编码解码测试。
3.1 获取一页的html
创建文件3tieba.py
from urllib import request # 加载一个页面 def loadPage(url): # 发送请求 req = request.Request(url) # 打开响应的对象 response = request.urlopen(req) # 获取网页的内容 html = response.read() # 对unicode编码进行解码 content = html.decode('utf-8') return content url = 'https://tieba.baidu.com/f?kw=%E6%9F%AF%E5%8D%97&pn=0' content = loadPage(url) print(content) |
3.2 下载的内容保存到本地文件
# 把下载的内容保存到本地文件 def writePage(html, filename): print('正在保存到:', filename) f = open(filename, 'w', encoding='utf-8') f.write(html) f.close() |
url = 'https://tieba.baidu.com/f?kw=%E6%9F%AF%E5%8D%97&pn=0' content = loadPage(url) filename = 'tieba.html' writePage(content, filename) |
3.3 设置起始页和终止页
指定从第几页开始,到第几页结束
# 设置起始页和终止页 def tiebaSpider(url, beginPage, endPage): for page in range(beginPage, endPage + 1): pn = (page - 1) * 50 fullurl = url + '&pn=' + str(pn) content = loadPage(url) filename = '第' + str(page) + '页.html' writePage(content, filename) |
url = 'https://tieba.baidu.com/f?kw=%E6%9F%AF%E5%8D%97' tiebaSpider(url, 1, 4) |
3.4 用户输入参数
from urllib import request, parse |
if __name__ == '__main__': kw = input('请输入要爬取的帖吧:') beginPage = int(input('请输入起始页:')) # int() 字符串转整数 endPage = int(input('请输入终止页:')) # 把输入的中文内容进行url编码 key = parse.urlencode({'kw':kw}) url = 'https://tieba.baidu.com/f?' + key tiebaSpider(url, beginPage, endPage) |
END
学习Python(一)相关推荐
- 如何零基础学习python语言_零基础如何入门Python语言?有哪些学习建议?
众所周知,Python目前是最受欢迎的编程语言之一,尤其是对于零基础的初学者来说,Python语言更是十分的友好.因此,不少初学者常常会有这样一个共同的疑惑,零基础如何入门Python语言?本文就来给 ...
- 0基础学好python难不难_零基础学习Python难不难?Python有什么优势?
原标题:零基础学习Python难不难?Python有什么优势? Python是一种计算机程序设计语言.首先,我们普及一下编程语言的基础知识.用任何编程语言来开发程序,都是为了让计算机干活,比如下载一个 ...
- python后端学什么框架_献给正在学习python的你, 10个最受欢迎的Python开源框架
很多小伙伴在学习wen的时候说,有没有几个常用的框架,好多小伙伴都只说对了其中几个,只有少部分是说正确的,想要了解更多,欢迎大家订阅微信公众号:Python从程序猿到程序员,或者加4913.08659 ...
- 零基础学习Python需要注意的几个点,Python培训机构排名
俗话说的好万事开头难,不管你做任何事情,开头的确很较难的,学Python编程也是如此,因此刚开始学Python编程的同学们,就要多借鉴过来人的经验,少走弯路,本文小编就为大家分享几个Python编程小 ...
- 什么样的人合适学习Python?
什么样的人合适学习Python?近几年,关注Python技术的小伙伴越来越多,很多人都想知道Python培训好不好学?难不难学?哪些人适合学?来看看下面的详细介绍. Python培训分享:什么样的人合 ...
- 为什么学习Python数据分析
为什么学习Python数据分析?这是很多人都比较关注的一个问题,Python编程语言近几年在互联网行业是非常火爆的,尤其是在人工智能这一领域,它会大大的提高我们的工作效率等等,具体来看看下面的详细介绍 ...
- 0基础学怎么学习python
Python相对于其他编程语言来说是比较简单的,非常适合零基础的小白学习,想要进入到互联网行业,可以优先选择学习Python,那么下面小编就来为大家详细的介绍一下0基础学怎么学习python? ...
- 学习Python开发培训有用吗
学习Python开发培训有用吗?这是目前很多人都比较关注的一个问题,Python语言在最近几年是广受IT互联网行业关注的, 下面我们就针对这问题来详细的分析一下. 学习Python开发培训有用吗?Py ...
- 学习Python往哪个方向发展好
Python近几年在IT行业的发展前景是非常可观的,尤其是在人工智能领域这一块,吸引了很多人的关注,但不仅仅是人工智能领域,Python在很多其他地方也是非常有发展前景的,那么具体学习Python往那 ...
- 学习Python编程开发可以从事的岗位有哪些?
Python编程技术在人工智能领域的发展有目共睹,很多人都想学习Python技术,而且从事Python开发,所从事的工作机会和工作岗位及工作内容可选择的余地很多,未来发展空间也很大.下面我们就来详细的 ...
最新文章
- 邻接表存储(链式前向星)
- HP-UX下查询函数是否为线程安全的方法
- php log在哪里看,PHP Log时时查看小工具
- Java获取yahoo天气预报
- Google搜索引擎的十大应用
- 代码检查规则:Python语言案例详解
- touchstart与click同时触发
- 渗透测试报告封面样本
- [Leedcode][JAVA][第983题][最低票价][动态规划]
- JS代码实例:实现随机加载不同的CSS样式
- 我用Python帮学校写了一款图书管理系统!教导员居然请我吃饭
- DTrace Tools
- java 中对hashmap进行排序
- Latex调节目录间距\tableofcontents
- 【Pycharm】主题背景颜色更改
- window.print()实现分页打印
- 到Visual Studio Code en 2020中的实际实现
- Web在线聊天室(2) --- 技术实现原理
- 小鸡手柄或其他手柄导致的电脑无法熄屏休眠问题
- 逐步回归matlab函数,Matlab逐步回归
热门文章
- vue如何使用原生js写动画效果_手摸手,带你用 vue 动画实现原生 app 切换效果,丝滑般的体验...
- transactionscope 中的异步 处理 异常_.NET Core中TransactionScope事务处理方法介绍及注意事项...
- 最新的SCI-HUB访问地址
- Ubuntu 18.04 固件的烧录方法
- 2.JS执行上下文和变量对象
- Machine Learning | (11) 回归性能评估与欠拟合、过拟合
- RDKit2018.03.3+Win10(64位):ImportError: DLL load failed: 找不到指定的模块。
- Scanpy(一)AnnData数据结构与一些API用法介绍
- python画图,使用matplotlib和seaborn来设置图形的字体大小,坐标轴的线宽,风格,取值范围
- 小程序 a标签_微慕WordPress小程序增强版V2.0新版上线