2019计算机项目部第三次部门培训——Python语法基础

编程入门 行业动态 更新时间:2024-10-28 02:26:19

2019计算机项目部第三次部门培训——Python<a href=https://www.elefans.com/category/jswz/34/1770552.html style=语法基础"/>

2019计算机项目部第三次部门培训——Python语法基础

文章目录

    • 1、基础知识
      • 1.1 变量和赋值语句
      • 1.2 Python神奇之处1
      • 1.3 输入和输出
    • 2、列表、元组和字典(基本的数据结构)
      • 2.1 通用的序列操作
        • 2.1.1 索引
        • 2.1.2 切片
        • 2.1.3 调整步长
        • 2.1.4 序列相加
        • 2.1.5 in运算符(bool运算符)
      • 2.2 列表
        • 2.2.1 创建列表的方法
        • 2.2.2 基本的列表操作
        • 2.2.3 列表方法
      • 2.3 元组
        • 2.3.1 元组的创建
      • 2.4 字典
        • 2.4.1 创建字典的方法
      • 2.4.2 基本的字典操作
      • 2.4.3 字典方法
    • 3、使用字符串
      • 3.1 设置字符串的格式
      • 3.2 字符串方法
    • 4、语句
      • 4.1 import语句
      • 4.2 序列解包
      • 4.3 条件语句
      • 4.4 循环语句
        • 4.4.1 while循环
        • 4.4.2 for循环
        • 4.4.3 其他语句
      • 4.5 Python神奇之处2
    • 5、函数
      • 5.1 自定义函数的基本使用
      • 5.2 关键字参数(不必考虑参数的位置,参数可指定默认值)
      • 5.3 收集参数
      • 5.4 分配参数
    • 6、异常
      • 6.1 一些内置的常用异常类
      • 6.2 捕捉异常
    • 7、文件操作
      • 7.1 打开文件
      • 7.2 读取和写入
      • 7.3 with语句
      • 7.4 小练习
    • 8、作业

1、基础知识

1.1 变量和赋值语句

#使用Python变量前必须给它赋值,因为其无默认值
x=3

1.2 Python神奇之处1

#可同时给多个变量赋值
x,y,z=1,2,3
a=b=123#简单的多变量间值交换
a,b,c,d='a','b','c','d'
a,b,c,d=d,c,b,a

1.3 输入和输出

#输入语句:输入的值被input以字符串的形式返回给x
x=input("输入一个整数: ")#错误操作
#x=x*x#正确操作
x=int(x)*int(x)#输出语句
print('x: ',x)#输出语句拓展
print("Hello","World",sep="\n")   #将print语句中的分隔符改为换行符(默认分隔符为空格)print('Hello,',end=' ')   #将print语句中的结尾字符串指定为空格(默认为换行符)
print('World!')

2、列表、元组和字典(基本的数据结构)

最基本的数据结构为序列(如列表,元组和字符串)
序列中的每个元素都有编号(下标或索引)。

2.1 通用的序列操作

2.1.1 索引
#常规索引
greeting="Hello"
print(greeting[0])#负数索引
greeting="Hello"
print(greeting[-1])  #使用负数索引时,Python将从右(最后一个元素)开始往左数#索引拓展(如果函数调用返回一个序列,可直接对其执行索引操作)
twice=input("Name:")[2]
print(twice)
2.1.2 切片

用于提取序列的一部分,第一个索引是包含的第一个元素的下标,第二个索引是切片后余下的第一个元素的下标

string="I love ESTA!!"
s=string[2:6]
ss=string[-6:-2]
print(s)
print(ss)#sss=string[-6:0],若第一个索引指定的元素在第二个指定的元素后面,则结果为空序列#若要切片结束于序列末尾
sss=string[-6:]#同样,若要切片开始于序列开头
ssss=string[:6]
print(sss)
print(ssss)#表示整个序列
str=string[:]
2.1.3 调整步长

普通切片中,步长为1(隐式指定)

#调整步长为2
string="123456789"
str1=string[0:9:2]#步长为负数(不能为0),即从右向左提取元素
string="123456789"
str1=string[::-2]
2.1.4 序列相加

一般而言,只能拼接同类型的序列
str1=“Hello”+",world!"
str2=[1,2,3]+[4,5,6]
print(str1,str2,sep="\n")

2.1.5 in运算符(bool运算符)

用于检查特定的值是否包含在序列中;满足时返回True,不满足时返回False。

test="apple"
print('a'in test)

2.2 列表

列表:简单理解就是可变长度且元素可为任何数据的数组

2.2.1 创建列表的方法
#将任何序列(包括字符串)作为list的参数
l=list("Hello")#直接创建列表
ll=[1,2,3,4,5]
2.2.2 基本的列表操作
#删除元素
names=["Jason","Black","White"]
del names[2]
print(names)#给切片赋值1
name=list("Peter")
name[1:]=list("ython")
print(name)#给切片赋值2(用作插入和删除)
str=list("I love ESTA")
str[7:7]=list("HHUC ")
print(str)
str[7:12]=[]
print(str)
2.2.3 列表方法
#append:将一个对象附加到列表末尾
lst=list("EST")
lst.append('A')
print(lst)#clear:就地清空列表的内容
lst=list("ESTA")
lst.clear()
print(lst)#copy:复制列表(深拷贝)
a=[1,2,3]
b=a.copy()  #区别于'='的浅拷贝
print(b)#reverse:逆序排列列表中的元素
lst=list("python")
lst.reverse()
print(lst)#sort:对列表就地排序
x=[1,9,4,5,2,7]
x.sort()
print(x)

其他常用的列表方法还有count、entend、index、insert、pop、remove等。

2.3 元组

元组:不能修改的序列

2.3.1 元组的创建
#将一些值用逗号分隔
a=1,2,3
print(a)#常用做法
a=(1,2,3)#调用函数tuple:它将一个序列作为参数,并将其转换为元组
a=tuple([1,2,3])
b=tuple("abc")
print(a,b,sep='\n')#特殊情况:表示只包含一个值的元组
a=42,
b=(42,)
print(a,b,sep='\n')

2.4 字典

字典:Python中唯一的内置映射类型,由键及相应的值组成,这种键-值对称为项;键不可重复,值可重复。

2.4.1 创建字典的方法
#使用函数dict从其他映射或键-值对序列创建字典
msg=[("name","Perl"),("age","18")]
d=dict(msg)
print(d["name"])
print(d)#使用关键字实参来调用函数dict
d=dict(name="Perl",age="18")
print(d)#直接创建
d={"Name":"Perl","Age":"18"}
print(d["Name"])#使用字典方法fromkeys:创建一个新字典,其中包含指定的键,且每个键对应的值为None
d=dict.fromkeys(["Name","Age","Sex"])
print(d)
#不使用默认值None
dict.fromkeys(["Name","Age","Sex"],"xxx")

2.4.2 基本的字典操作

d=dict(Name="White",Age="19",Sex="M",School="HHUC")
#返回字典包含的键-值(项)对数
length=len(d)
print(length)#修改键的值(或是自动创建一个新项)
d["School"]="HHU"
d["Profession"]="Computer Science"
print(d)#删除一个项
del d["Age"]#检查字典是否包含某个项(键)
boo="Name" in d
print(boo)

2.4.3 字典方法

#clear:就地删除所有的字典项
d=dict(Name="White",Age="19",Sex="M",School="HHUC")
d.clear()
print(d)#copy:返回一个新字典,其包含的项与原来的字典相同(浅复制,值本身为原件)
x={'name':'xxx','age':[18,19]}
y=x.copy()  
y['name']='yyy'  #替换不影响原件
y['age'].remove(18)   #修改影响原件
print(x)
print(y)from copy import deepcopy
z=deepcopy(x)  #深复制(同时复制键及其包含的值)
z['age'].append(18)
print(x)
print(z)#items:返回一个字典视图(字典视图可用于迭代),其中包含指定字典中的项
d=dict(Name="White",Age="19",Sex="M",School="HHUC")
print(d.items())#update:使用一个字典中的项来更新另一个字典(无则添加,有则替换它),使用方法和函数dict一样
d=dict(Name="White",Age="19",Sex="M",School="HHUC")
d.update(Address="ChangZhou")
print(d)
x=dict(Age="18")
d.update(x)
print(d)

其他常用的字典方法还有get、keys、pop、popitem、setdefault、values等。

3、使用字符串

3.1 设置字符串的格式

基本思想:对字符串调用方法format

举个例子:

str1="{1}{space}{0}{space}{be}{space}{name}".format("name","My",be="is",space=" ",name="Peter")
str2="My grade is {num:8.2f}".format(num=96.3356)
print(str1)
print(str2)

上述代码中花括号括起来的内容称为替换字段,替换字段由字段名、转换标志和格式说明符组成,每部分都是可选的。

字段名:索引或标识符,指出要设置哪个值的格式并使用结果来替换该字符,如上述代码中的"0",“space”,“be”,“name”,“num”。

格式说明符:跟在冒号后面的表达式,包括格式类型(如字符串、浮点数或十六进制数等)、字段宽度和数的精度;上述代码中str2中的"f"即是浮点数类型,“8"则代表字段宽度为8,”.2"代表浮点数精度为2。

3.2 字符串方法

#find:在字符串中查找子串。若找到则返回子串的第一个字符的索引,否则返回-1。
title="Monty Python's Flying Circus"
x=title.find('Python')
y=title.find('fly')
z=title.find('n',10,20)   #指定起点和终点(均为可选),搜索范围依旧是左闭右开
print(x)
print(y)
print(z)#replace:将指定子串都替换为另一个字符串,并返回替换后的字符串
str="I is XXX".replace("is","am")
print(str)#join:合并序列的元素(序列的元素必须是字符串)并返回一个字符串
nums=list("12345")
plus='+'
expression=plus.join(nums)
print(expression)#split:将字符串拆分为列表,并返回拆分后的列表
#指定分隔符
expression="1+2+3+4+5"
nums=expression.split('+')
print(nums)
#未指定分隔符,将在单个或多个连续的空白字符(空格、换行符等)处进行拆分
str="I love\nESTA"
ss=str.split()
print(ss)

其他常用的字符串方法还有lower、upper、title、strip等。

4、语句

4.1 import语句

#导入一个模块
import somemodule(模块)
somemodule.somefunction()   #调用该模块的某个函数#从模块中导入(一些)函数
from somemodule import somefunction[,anotherfunction,...]
somefunction()     #导入模块中的一切函数
from somemodule import *
somefunction()#给模块指定别名
import somemodule as m
m.somefunction()#导入一个函数并指定别名
from somemodule import somefuntion as f
f()

4.2 序列解包

使用星号运算符(*)来收集多余的值,这样无需确保值和变量的个数相同;带星号的变量包含的总是一个列表。

#不同位置
a,b,*rest=[1,2,3,4]
print(rest)sentence="I love ESTA"
*first,last=sentence.split()
print(first)
first,*middle,last=sentence.split()
print(middle)

4.3 条件语句

视为假的布尔表达式:False、None、0、""、()、[]、{},其余值均被视为真。

age=int(input("请输入你的年龄:"))
if 0<=age<6:print("at a kindergarten")
elif 6<=age<=12:print("at primary school")
elif 12<age<=15:print("at a junior school")
elif 15<age<=18:print("at a high school")
else:print("be an adult")

4.4 循环语句

4.4.1 while循环
x=1
while x<=10:print(x,end=' ')x+=1
4.4.2 for循环
#迭代(遍历)列表
words=["this","is","an","apple"]
for word in words:print(word)#遍历特定范围的数(调用range函数,范围是左闭右开)
#打印0-100
for n in range(0,101,2):  #range(0,101)等价于range(101)print(n,end=' ')#迭代字典
d=dict(Name="XXX",Age="18")
for key in d:print(key,"corresponds to",d[key])#排序后迭代(调用sorted函数,该函数适用任何序列或可迭代的对象,返回排序后的列表)
nums=[9,8,5,4,3,2,1]
for i in sorted(nums):print(i,end=" ")

除sorted之外,还可以调用一些内置函数帮助迭代序列;如调用函数zip()使用并行迭代,调用reversed进行反向迭代等。

4.4.3 其他语句

1、break语句,用法同C,C++
2、continue语句,用法同C,C++
3、pass语句,用作占位,不起任何作用

4.5 Python神奇之处2

#列表推导(从其他列表创建列表的方式)
l1=[x*x for x in range(10)]
print(l1)l2=[x*x for x in range(10) if x%3==0]
print(l2)l3=[(x,y) for x in range(5) for y in range(5) if x%2!=0 if y%2==0]
print(l3)girls=['alice','bernice','clarice']
boys=['chris','arnold','bob']
l4=[b+'+'+g for b in boys for g in girls if b[0]==g[0]]#字典推导
squares={i:"{} squared is {}".format(i,i**2) for i in range(10)}
print(squares)

5、函数

5.1 自定义函数的基本使用

def hello(name):return 'Hello, '+name+'!'
print(hello('world'))

5.2 关键字参数(不必考虑参数的位置,参数可指定默认值)

def hello(name,greeting='Hello',punctuation='!'):print('{},{}{}'.format(greeting,name,punctuation))
hello('MMS','Hi','^_^')
hello('MMS',punctuation='^_^')
hello('MMS',greeting='Glad to see you')

5.3 收集参数

#星号收集余下的位置参数并存放在一个元组中
def print_params1(title,*params):print(title,end=' ')print(params)
print_params1('Params:',1,2,3)   #收集关键字参数需要**,得到的为一个字典
def print_params2(**params):print(params)
print_params2(x=1,y=2,z=3) 

5.4 分配参数

#1、拆分序列*
def add(x,y):return x+y
params=1,2
print(add(*params))def mutiply(x,y,z):return x+y*z
params1=[2,3]
print(mutiply(1,*params1))   #星号部分必须位于参数列表末尾#2、拆分字典**
def hello(greeting="Hello",name='World'):print(greeting+',',name)
dic={'name':'MMS','greeting':'Glad to see you'}
hello(**dic)

6、异常

Python使用异常对象来表示异常状态,并在遇到错误时引发异常。异常对象未被捕获时,程序将终止并显示一条错误信息(Traceback)

#除数为0
1/0

6.1 一些内置的常用异常类

1、Exception:几乎所有的异常类都是从它派生而来的
2、AttributeError:引用属性或给它赋值失败时引发
3、IndexError:使用序列中不存在的索引时引发
4、NameError:找不到名称(变量)时引发
5、SyntaxError:代码不正确时引发
6、TypeError:将内置操作或函数用于类型不正确的对象时引发
7、ValueError:将内置操作或函数用于类型正确但包含的值不正确的对象
8、ZeroDivisionError:在除法或求模运算的第二个参数为0时引发

6.2 捕捉异常

#捕获异常1(打印一条错误信息)
try:x=int(input('Enter the first number: '))y=int(input('Enter the second number: '))print(x/y)
except ZeroDivisionError:print("The second number can't be zero")#捕获异常2(多个except子句,防止漏网之鱼)
try:x=int(input('Enter the first number: '))y=int(input('Enter the second number: '))print(x/y)
except ZeroDivisionError:print("The second number can't be zero")
except ValueError:print("That wasn't a number")#捕获异常3(一个except子句捕获多种异常,使用元组)
try:x=int(input('Enter the first number: '))y=int(input('Enter the second number: '))print(x/y)
except (ZeroDivisionError,ValueError,TypeError):print("Your numbers were invalid!")#捕获异常4(捕获异常对象本身,记录错误但程序继续运行)
try:x=int(input('Enter the first number: '))y=int(input('Enter the second number: '))print(x/y)
except (ZeroDivisionError,ValueError,TypeError) as e:print(e)#捕获异常5(捕获所有异常)
try:x=int(input('Enter the first number: '))y=int(input('Enter the second number: '))print(x/y)
except:print("Something wrong happened.")#捕获异常6(添加一个else子句,无异常时执行)
#仅当无异常时跳出循环,否则打印错误信息
while True:try:x=int(input('Enter the first number: '))y=int(input('Enter the second number: '))value=x/yprint('x / y is',value)except Exception as e:print(e)else:break#捕获异常7(不论try子句发生什么异常都将执行finally子句)
x=None
try:x=1/0
except Exception:print("Unknown Error")
else:print("No error")
finally:print("Cleaning up")del x

7、文件操作

7.1 打开文件

#打开当前目录中的一个文本文件(相对路径)
f=open("somefile.txt")#使用绝对路径打开
f=open("C://Users//MMS//Desktop//test.txt")
f=open("C:\Users\MMS\Desktop\test.txt")

常用的几个文件模式
1、‘r’:读取模式(默认值)
2、‘w’:写入模式
3、‘a’:附加模式
4、’+’:读写模式(与其他模式结合使用)

7.2 读取和写入

#写入
f=open('test.txt','w')
f.write("Hello, World")
f.close()#读取
f=open('test.txt','r')
print(f.read(5))
#读取完文件中剩余全部内容
print(f.read())
f.close()

7.3 with语句

with语句:在语句体中,你可以将数据写入文件(或其他操作);到达语句末尾自动关闭文件。

with open('test.txt','r') as f:print(f.read())

7.4 小练习

path=input("请输入你的桌面路径:")
with open(path+'timg.txt','rb') as f:str=f.read()
with open(path+'pikachu.jpg','wb') as ff:ff.write(str) 

8、作业

读取Homework.txt中的内容,并用一个字典来统计(字典的键为出现的单词,值为该单词出现的次数),统计完毕后按照规定的格式输出。

规定的格式为:第一行是Vocabulary和Num,中间有一个英文空格;下面几行输出字典的键和值,要求键的末尾与Vocabulary对应,值的末尾与Num对应。

注:同一单词的不同形式当作不同单词来算,最长的键不会超过Vocabulary的长度。

Volcabulary Num  doctoring   2  doctor  12

参考文献:Magnus Lie Hetland. Python基础教程(第3版). 人民邮电出版社

更多推荐

2019计算机项目部第三次部门培训——Python语法基础

本文发布于:2024-03-23 21:04:58,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1742803.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:语法   部门   计算机   基础   项目

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!