目录
Python是一种解释型、动态语言、面向对象的编程语言。以其简单易学的特性著称,语法清晰,代码可读性强,适合快速开发。广泛应用于Web开发、数据分析、人工智能、科学计算、自动化脚本等领域。
- 静态语言 C、java在编译时要进行类型检查,变量和表达式在编译时就要确定类型,且在程序运行时不会再改变。编写代码时需要明确指定变量的类型(必须变量的定义),这有助于减少运行时错误,因为很多类型错误会在编译阶段就被捕获。
- 动态语言 Python、JavaScript 则在运行时进行类型检查。这意味着变量的类型不是固定的,可以在程序执行期间改变。编写代码时不需要明确指定变量的类型,(不需要定义变量)。
一、数据类型
(一) 基本数据类型:
1. 数值类型:
- 整数(int):用于表示正整数、0和负整数,包括二进制、八进制、十进制和十六进制等形式。例如:0b1010、0o12、10、0x1A1。
- 浮点数(float):用于表示带有小数的数值,包括科学计数法。例如:3.14、4.3e-3、9.8E7。
- 复数(complex):由实部和虚部组成,用于表示复数。例如:3+4j12。
- 2. 字符串(str):由零个或多个字符组成的有序字符序列,可以用单引号、双引号或三引号定义。例如:"hello"、'Python'、"""这是一个多行字符串"""。
- 复数(complex):由实部和虚部组成,用于表示复数。例如:3+4j12。
- 浮点数(float):用于表示带有小数的数值,包括科学计数法。例如:3.14、4.3e-3、9.8E7。
3. 布尔值(bool):只有两个值,True和False,用于表示逻辑上的真或假。
4. 空值(None):表示什么也没有,常用于表示空值或未定义的值。
5. 二进制类型
字节(bytes):不可变的字节序列,通常用于处理二进制数据。例如:b'hello' 或 b1=”你好”.encode('utf-8')或
b1=b'\xe4\xbd\xa0\xe5\xa5\xbd',注意:b”你好” 是错误的。
字节数组(bytearray):可变的字节序列,用于处理二进制数据。
例 如: bytearray(b'hello')。
内存视图(memoryview):提供对已存在的二进制数据的访问,但不拥有数据本身。
例 如:通过内存视图来操作字节对象或数组的一部分
-
b1= b'hello' m = memoryview(b1) print(m) # 访问第一个字节 print(m[0:3]) # 访问前三个字节 m[0]=1#错了b1字节型(bytes)不能修改 ba = bytearray(b'hello') m = memoryview(ba) m[0]=98 #结果ba修改为b'bello'等价ba[0]=98 不能用m[0]=‘b’
(二)容器数据类型:
Python中的容器类型主要包括以下几种:列表、元组、字符串、集合和字典,元素之间用逗号分隔。每种容器类型都有其特定的用途和特性。
-
- 列表(list):列表是一种有序可变的容器,可以包含不同类型的数据,如数字、字符串、布尔值等。列表使用方括号[]定义。列表支持索引访问、切片操作、添加(append)、删除(remove)、修改元素等操作。
[1,
"张倩",23,165.5
,[
"语文","数学"]],
可以定义L=[]或L=
list()
。
- 元组(tuple):元组与列表类似,但元组是不可变的,即一旦创建后不能修改。元组使用圆括号()定义,元素之间用逗号分隔。元组支持索引访问和切片操作,但不支持添加、删除或修改元素。
(1,
"张倩",23,165.5
,[
"语文","数学"])
,可以定义t=tuple((1, "张倩",23,165.5,[ "语文","数学"]))
- 集合(set):集合是一种无序且不重复的容器。集合使用大括号{}或set()函数定义。集合的主要优势在于快速成员关系测试和数据去重,支持添加(add)、删除(remove)、交集(union)、差集(difference)等操作。
- 字典(dict):字典是一种无序的键/值对集合,字典的键是不可变的,这意味着一旦字典被创建,其键就不能被修改。字典使用花括号{}或dict()函数定义,{键:值,……}。字典支持通过键获取值、添加或修改键/值对、删除键/值对等操作。{'name': 'Alice', 'age': 25}或d1={'name': 'Alice', 'age': 25},访问方式d1['name']="tom"
- 列表(list):列表是一种有序可变的容器,可以包含不同类型的数据,如数字、字符串、布尔值等。列表使用方括号[]定义。列表支持索引访问、切片操作、添加(append)、删除(remove)、修改元素等操作。
二、控制语句
注意:Python里没有{},使用缩进实现,主要用 缩进对齐 标识代码块的开始和结束,并且是语法的一部分。在Python中,缩进不仅用于格式化代码,更重要的是它定义了代码块的范围。
1.if语句:如果条件为真,则执行特定的代码块。
例如:if age >= 18:
print("你是成年人")
else:
print("你是未成年人")
2.循环语句
for循环:用于遍历容器或字符串(如列表、元组、字典、字符串等)中的元素。
例如:
fruits = ['apple', 'banana', 'orange']
for fruit in fruits :
print(fruit)
while循环:在条件为真时一直执行,直到条件变为假。例如:
count = 1
while count <= 5 :
print(count)
count += 1
3.跳转语句用于改变程序的正常流程
break语句:用于立即退出循环。
例如:for i in range(10):
if i == 5:
break
continue语句:用于跳过当前循环的剩余部分,继续下一轮循环。
例如:for i in range(10):
if i % 2 == 0:
continue
print(i)
pass语句:作为一个占位符,什么也不做。例如:pass
三、面向对象模块化编程综合实例
Python是一种广泛使用的高级编程语言,它以其简洁的语法和强大的库支持而闻名。然而,每种编程语言都有其优缺点:
优点:
-
易学性:Python的语法简洁明了,易于阅读和学习,这使得Python成为初学者和有经验的开发者的首选语言。
-
丰富的库和框架:Python拥有一个庞大的标准库和第三方库生态系统,例如NumPy(用于科学计算)、Pandas(用于数据分析)、Django(用于Web开发)等,这些库极大地简化了许多常见任务的实现。
-
跨平台:Python可以在多种操作系统上运行,包括Windows、macOS和Linux,无需修改代码即可在不同平台上运行。
-
高生产率:Python的快速开发周期和高生产率使得它非常适合快速原型开发、脚本编写和自动化任务。
-
社区支持:Python拥有一个活跃和友好的社区,这为开发者提供了大量的资源、教程和支持。
-
动态类型:Python是动态类型的,这意味着你不需要在编写代码时声明变量类型,这增加了编程的灵活性和速度。
从软件开发的系统性和工程性角度看,初学者很容易忽视或察觉不到软件工程的工程思维,从而缺少了工程能力的锻炼。基本工程思维具体如下:
模块化:将复杂的问题拆分成若干个子问题,每个子问题都是一个模块,每个模块都有自己独立的功能,并且模块之间可以相互协作,共同完成复杂问题的解决。这种方法有助于提高开发效率和代码的可维护性
代码质量:编写高质量的代码是工程思维的重要体现。高质量代码不仅要求代码的正确性,还要求代码的可读性、可维护性和可扩展性。这包括使用良好的编程习惯、合理的代码结构、清晰的注释等。
以下实例说明基本语法的用法和工程思维的基本规划实战:
import requests as r
from bs4 import BeautifulSoup as soup#装载库,as为别名soup,简化名称方便使用
import pandas as pd
class ComingFilm():#定义类
#定义类的方法,self的作用相当于C++、java 的表示对象自己的this
def getResponse(self):
header = {'User-Agent': 'ua.chrome'}#字典类型
res=r.get(' ',headers=header)#库函数调用
#print(res.text)
print(res.status_code)
#print(res.headers)
res.encoding='utf-8'
tree=soup( res.text,'lxml' )
return tree
def getData(self,DOMtree):
# film为list类型,存储每行<tr class="">……</tr>
film=tree.select('tbody >tr')
print(film[0])
print("+++++++++++++++==========")
filmList=[]
for f in film:#访问列表每一个元素,f存储每一行
items=f.select('td')
row=[]
for item in items:#提取每一行的每一列
#print(item.get_text())
row.append(item.get_text().strip().replace('\n', ''))#容器list的方法
filmList.append(row)
#print(row)
self.saveData(filmList)
def saveData(self,filmList):
print(filmList[0:2])#切片访问list
print("+++++++++++++++==========")
d=pd.DataFrame(filmList,columns=['data','name','type','loc','Wperson'])
#DataFrame是一种二维的表格型数据结构,
print(d[0:2][:])#切片访问dic
print("+++++++++++++++==========")
print(d)
d.to_csv("Coming5.csv",index=False,encoding='utf-8-sig',mode='+a')
#DataFrame存储到Coming5.csv文件
if __name__=="__main__" :
CF= ComingFilm()#创建对象CF
tree=CF.getResponse()#调用对象的方法
if not (tree is None):
CF.getData(tree)