前言
本图文是本期图文的下篇,可能篇幅较长大概有10000多字,很高兴您能阅读,也感谢您的关注支持!这期下篇主要还是接着上次的内容继续,在上篇中我介绍了关于Python环境的安装、基本数据处理、输入输出以及运算符与表达式等内容,如果您需要阅读上期请访问:Python语言快速入门(上),本次下篇则主要围绕流程控制、其他常用的数据类型以及函数三个方面进行阐述,话不多说,这就开始了!
1 流程控制
Python语言包含3种流程控制结构,即if、for 以及 while。
1.1 if 语句
if 语句语法如下:
if 条件表达式1:
程序语句区块1(注意缩进)
elif 条件表达式2:
程序语句区块2
else:
程序语句区块3
在Python语句中,当指令有“:”(英文冒号)时,下一行的程序代码就必须缩进,否则无法正确的解释或编译通过,默认缩进4个空格,我们又可以使用键盘上的Tab键或空格键来实现缩进效果,看一个栗子吧!
month=int(input('请输入月份: '))
if 2<=month and month<=4:
print('充满生机的春天')
elif 5<=month and month<=7:
print('热力四射的夏季')
elif month>=8 and month <=10:
print('落叶缤纷的秋季')
elif month==1 or (month>=11 and month<=12):
print('寒风刺骨的冬季')
else:
print('很抱歉没有这个月份!!!')
# 运行结果
# 请输入月份:4
# 充满生机的春天
另外,在其他程序语言设计中,常以switch和case语句来控制复杂的分支流程,在Python语言中,没有switch语句,但我们人可以使用if语句来实现同样的功能,例如;
print('1:80以上,\n2:60~79,\n3:59以下')
ch=input('请输入等级分数: ')
#条件语句开始
if ch=='1':
print('继续保持!')
elif ch=='2':
print('还有进步空间!!')
elif ch=='3':
print('请多多努力!!!')
else:
print('error')
# 运行结果
# 1:80以上,
# 2:60~79,
# 3:59以下
# 请输入等级分数: 2
# 还有进步空间!!
1.2 for 循环
for循环又称计数循环,是一种可以重复执行固定次数的循环,语法如下:
for item in sequence: 其中sequence是一个列表或者一个字符串。
程序语句区块
# 以下代码可有可无,为附属代码,一般不用
# 在 python 中,for … else 表示这样的意思,for 中的语句和普通的没有区别,else 中的语句会在循环正常执行完(即 for 不是通过 break 跳出而中断的)的情况下执行。
else:
程序语句区块
Python提供了range()函数来搭配使用,主要功能是建立整数序列,先让我们了解一下range()函数:
range([起始值], 终止条件, [步长值])
# 起始值:默认为0,可以省略
# 终止条件:必须的参数,不可省略
# 步长值:计数器的增减值,默认为1,可以省略
-
range(5)代表索引值从0 开始,输出5个元素,即0,1,2,3,4共5个元素,注意不包含5!!
-
range(1, 6)代表索引值从1开始,到索引编号5结束,同样不包含6,即1,2,3,4,5共5个元素。
-
range(2, 10, 2)代表索引值从2开始,以步长2前进,到索引编号10前面结束,即2,4,6,8公司各元素。
下面是几个栗子:
## 1 ##
for i in range(5):
print(i)
# 运行结果
# 0
# 1
# 2
# 3
# 4
## 3 ##
for i in range(1, 6):
print(i)
# 运行结果
# 1
# 2
# 3
# 4
# 5
## 3 ##
for i in range(2, 10, 2):
print(i)
# 运行结果
# 2
# 4
# 6
# 8
初步掌握了for循环,我们再看一个综合一点的栗子:
sum=0
number=int(input('请输入整数: '))
#递增for循环,从小到大打印出数字
print('从小到大排列输出数字:')
for i in range(1,number+1):
sum+=i #设置sum为i的和
print('%d' %i,end='')
#设置输出连加的算式
if i<number:
print('+',end='')
else:
print('=',end='')
print('%d' %sum)
sum=0
#递减for循环,从大到小打印出数字
print('从大到小排列输出数字:')
for i in range(number,0,-1):
sum+=i
print('%d' %i,end='')
if i<=1:
print('=',end='')
else:
print('+',end='')
print('%d' %sum)
# 运行结果
# 请输入整数: 8
# 从小到大排列输出数字:
# 1+2+3+4+5+6+7+8=36
# 从大到小排列输出数字:
# 8+7+6+5+4+3+2+1=36
1.3 while 循环
while循环的条件表达式是用来判断是否执行循环的测试条件,当条件表达式为False时,就会结束循环的执行。其语法如下:
while 条件表达式:
要执行的程序语句
# 以下代码为附属语句,一般不用
# 下面与while对应的else指令也是一个选择性指令,可加也可以不加。一旦条件表达式不否和,就会执行else区块里面的程序语句。
else:
不符合条件所要执行的程序语句
看个栗子:
product=1
i=1
while i<6:
product=i*product
print('i=%d' %i,end='')
print('\tproduct=%d' %product)
i+=1
print('\n阶乘的结果=%d'%product)
# 运行结果
# i=1 product=1
# i=2 product=2
# i=3 product=6
# i=4 product=24
# i=5 product=120
# 阶乘的结果=120
在其他程序语言中,存在do while语句,实现必须执行循环中的语句一次的效果,但Python语言中不存在这样的语句,但我们仍可以通过下面的实例实现这种效果:
sum=0
number=1
while True:
if number==0:
break
number=int(input('数字0为结束程序,请输入数字: '))
sum+=number
print('目前累加的结果为: %d' %sum)
# 运行结果
# 数字0为结束程序,请输入数字: 85
# 目前累加的结果为: 85
# 数字0为结束程序,请输入数字: 12
# 目前累加的结果为: 97
# 数字0为结束程序,请输入数字: 4
# 目前累加的结果为: 101
# 数字0为结束程序,请输入数字: 419
# 目前累加的结果为: 520
# 数字0为结束程序,请输入数字: 0
# 目前累加的结果为: 520
2 其他常用数据类型
其他常用的类型包括string字符串、tuple元组、list列表、dict字典等,为了方便存储多项相关的数据,大部分的程序设计语言(例如C/C++语言)会以数组(array)的方式处理。类似与数组的结构,在Python语言中被称为序列(Sequence),序列类型可以将多项式数据集合在一起,通过“索引值”存取序列中的数据项。在Python语言中,string字符串、list列表、tuple元组都属于序列的数据类型。
2.1 string 字符串
将一连串字符放在单引号或双引号中括起来就是一个字符串(string),如果要将字符串赋值给特定变量,就可以使用“=”赋值运算符,例如:
str1 = "" # 空字符串
str2 = "L" # 单字符串
str3 = "Happy" # 字符串,可以使用单引号也可双引号
另外,内建函数str()可以将数值数据转化为字符串,例如:
str() # 输出空字符串''
str(123) # 将数字123转化为字符串"123"
要串接多个字符串,也可以使用“+”符号,例如:
print('Xi\'An JiaoTong Uni' + 'versity') # 注意转义符 \'
# Xi'An JiaoTong University
字符串的索引值具有顺序性,如果要获取单个字符或子字符串,我们就可以使用[]运算符,可以参考下表的说明:
运算符 | 功能说明 |
---|---|
s[n] | 按指定索引值获取序列的某个元素,其中n可为负数,表示倒数,例如-1代表序列最后一个元素 |
s[n:] | 按索引值从n开始到序列的最后一个元素 |
s[n:m] | 获取索引值从n到m-1的若干元素 即左闭右开 |
s[:m] | 从索引值0开始到索引值m-1结束 |
s[:] | 表示全体元素 |
s[n:m:k] | 表示索引值从n到索引值m-1结束,以k为步长 |
s[::-1] | 将整个序列的元素反转 |
来看一些栗子吧
str1 = "0123456789"
print(str1[5])
# 结果: 5 # 该结果其实为字符串‘5’,以下同样
print(str1[5:])
# 结果: 56789
print(str1[5:8])
# 结果: 567
print(str1[:5])
# 结果: 01234
print(str1[:])
# 结果: 0123456789
print(str1[3:9:2])
# 结果: 357 # 注意不包括元素9
print(str1[-1])
# 结果: 9
print(str1[::-1])
# 结果: 9876543210
字符串的方法很多,下面介绍几个实用的方法。
(1) len()
功能是获取字符串的长度。
print(len('Hello_Python'))
# 12
(2) count()
功能是找出子字符串出现的次数。
msg = 'Never put off until tomorrow what you can do today.'
print(msg.count('e'))
# 2
(3) split()
功能是可根据sep设置字符来分割字符串。
data = 'XJTU HFUT THU TJU ZJU NJU'
print(data.split()) # 输出将是一个列表,默认以空格分割
# ['XJTU', 'HFUT', 'THU', 'TJU', 'ZJU', 'NJU']
data1 = 'XJTU/HFUT/THU/TJU/ZJU/NJU'
print(data1.split(sep = '/'))
# ['XJTU', 'HFUT', 'THU', 'TJU', 'ZJU', 'NJU']
# 当然这里的sep也可以省略,像这样,
print(data1.split('/'))
# ['XJTU', 'HFUT', 'THU', 'TJU', 'ZJU', 'NJU']
(4) find()
功能是检测字符串是否包含了子字符串str,并返回其位置,注意字符串的索引值是从0开始的。
msg = 'Python is easy to learn'
print(msg.find('easy'))
# 10
print(msg.find('on'))
# 4
(5) upper()和lower()方法
功能是进行大小写字母转换。
msg = 'Python is Easy To Learn'
print(msg.upper()) # 将小写字母转换为大写
# PYTHON IS EASY TO LEARN
print(msg.lower()) # 将大写字母转换为小写
# python is easy to learn
2.2 list 列表
-
列表是 Python 中的最基本的数据结构;
-
方括号中用逗号分隔元素来创建一个列表;
-
列表中的某个元素可以通过使用方括号中的索引来访问。
列表是一种以中括号“[]”存放不同数据类型的有序数据类型。活不多说,先看几个列表栗子哈:
list1 = ['Google', 'Runoob', 1997, 2000]
list2 = [1, 3, 7, 4, 5]
list3 = ["a", "b", "c", "d"]
list4 = ['red', 'green', 'blue', 'yellow', 'white', 'black']
当然列表也可以是空列表,也可以包含不同的数据类型或者其他子列表,例如,
data_list0 = [] # 空的列表
data_list1 = ['Marry', [78, 21], 'Eric', '12']
列表是一种可变的序列类型,列表中的每一个元素都可以通过索引来取得其值。因此在数据结构中的数组(array),在实现上常以列表的方式来表示数组的结构。在列表中增加元素,可通过append()方法实现。如果要获取列表的长度,就可以使用len()函数。list类型可以使用[]运算符来获得列表的元素。
(1) 列表嵌套在其他列表中
number = 3
things = ["string", 0, [1, 2, number], 4.56]
print(things[1])
print(things[2])
print(things[2][2])
# 结果:
0
[1, 2, 3]
3
(2) 列表操作
要查找某个值是否在列表中,可以使用 in 运算符。如果值在列表中出现一次或多次,则返回 True,否则返回 False。
words = ["spam", "egg", "spam", "sausage"]
print("spam" in words)
# True
print("egg" in words)
# True
print("tomato" in words)
# False
in 运算符也用于确定一个字符串是否是另一个字符串的子字符串。
# 要确定某个值是否不在列表中,可以使用 not 操作符:
# 以下两种方式均可
nums = [1, 2, 3]
print(not 4 in nums)
# True
print(4 not in nums) # 一般采用这样
# True
print(not 3 in nums)
# Flase
print(3 not in nums) # 一般采用这样
# Flase
(3) 列表函数
append 方法
append 是列表类的一个方法,可以使用 append 方法将一个元素添加到现有列表的末尾。
nums = [1, 2, 3]
nums.append(4)
print(nums)
# 结果:
[1, 2, 3, 4]
len()函数
要获取列表中的项目数量,可以使用 len 函数。
nums = [1, 3, 5, 2, 4]
print(len(nums))
#结果:5
与 append 方法不同,len 是一个正常的函数,而不是一个方法。这意味着它写在被调用的列表之前。
insert 方法
insert 方法与 append 相似,不同之处在于它允许您在列表中的任何位置插入一个新元素,而不仅仅是在最后。
words = ["W3Cschool", "Good"]
index = 1
words.insert(index, "is")
print(words)
#运行结果:
['W3Cschool', 'is', 'Good']
index 方法
使用index 方法会找到列表项的第一个匹配项并返回它的索引,如果该项目不在列表中,则会引发 ValueError。
letters = ['p', 'q', 'r', 's', 'p', 'u']
print(letters.index('r'))
print(letters.index('p'))
print(letters.index('z'))
# 结果:
2
0
ValueError: 'z' is not in list
列表还有一些很有用的功能和方法:
函数/方法 | 功能 |
---|---|
max(list) | 返回具有最大值的列表元素 |
min(list) | 返回具有最小值的列表元素 |
list.count(obj) | 返回一个元素在一个列表中出现的次数 |
list.remove(obj) | 从列表中删除一个元素 |
list.reverse() | 颠倒列表中的元素的顺序 |
2.3 tuple元组和dict字典
元组(tuple)也是一种有序的数据类型,它的结构和列表相同,列表是以中括号“[]”来存放元素的,但是元祖却是以小括号"()"来存放元素的。列表的元素位置和元素值都可以改变,但元组中的元素不能任意更改位置以及它的内容值。好了,来看几个栗子:
tup1 = ('XJTU', '12C', 47)
tup2 = 'XJTU', '12C', 47 # 也可以不带圆括号,一般还是带上比较好一些
字典(dict)存储的数据为“键(key)” 与“值(value)”所对应的数据。字典(dict)和列表(list)、元组(tuple)等序列类型有一个很大的不同点,字典中的数据是没有顺序性的,他是使用“键”来查询“值”的。除了使用大括号“{}”来产生字典外,也可以使用dict()函数,或者先创建空的字典,在使用[]运算符以键设值。
修改字典的方法必须针对“键”来设置该元素的新值。如果要新增字典的“键值”对,只要加入新的“键值”即可。和上面一样,来看几个栗子:
# 新建一个字典
dic = {'chinese':96, 'math':89, 'english':95}
print(dic)
# {'chinese':96, 'math':89, 'english':95}
print(dic['math'])
# 89
dic['math'] = 100 # 修改键值
print(dic)
# {'chinese':96, 'math':100, 'english':95}
dic['subject_Num'] = 3 # 新增键值
print(dic)
# {'chinese':96, 'math':100, 'english':95, 'subject_Num':3}
2.4 set集合
集合(set)是一个无序的不重复元素序列。
-
可以使用大括号{}或者set()函数创建集合;
-
注意集合里面的元素不会重复的;
-
创建一个空集合必须用set()而不是{},因为{}是用来创建一个空字典。
直接看几个实例,写不动了
>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket) # 这里演示的是去重功能
{'orange', 'banana', 'pear', 'apple'}
>>> 'orange' in basket # 快速判断元素是否在集合内
True
>>> 'crabgrass' in basket
False
# 下面展示两个集合间的运算.
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a
{'a', 'r', 'b', 'c', 'd'}
>>> a - b # 集合a中包含而集合b中不包含的元素
{'r', 'd', 'b'}
>>> a | b # 集合a或b中包含的所有元素
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b # 集合a和b中都包含了的元素
{'a', 'c'}
>>> a ^ b # 不同时包含于a和b的元素
{'r', 'd', 'b', 'm', 'z', 'l'}
另外也可以向集合中添加元素,我们采用add()方法。
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.add("Facebook")
>>> print(thisset)
{'Taobao', 'Facebook', 'Google', 'Runoob'}
对于集合的操作还有很多方法,由于这里是入门学习,不在展开,望读者谅解
3 函数(Function)
函数可以视为一段程序语句的集合,并且给予一个名称来代表它,当需要时再进行调用即可。Python提供了功能强大的标准函数库,这些函数库除了python自带的软件包,还有第三方开发的函数。所谓软件包,就是多个函数的集合,它可以通过import语句来引用,如果不太明白也不要紧,后面我们来看几个栗子你就基本明白了哈!
下面这些都是抄的,别人也写的很好,做了一些删减,实在写不动了,就搬过来了,哈哈!
3.1定义一个函数
你可以定义一个由自己想要功能的函数,以下是简单的规则:
-
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
-
任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
-
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
-
函数内容以冒号 : 起始,并且缩进。
-
return [表达式] 结束函数,选择性地返回一个值给调用方,不带表达式的 return 相当于返回 None。
# 语法
# Python 定义函数使用 def 关键字,一般格式如下:
def 函数名(参数列表):
函数体
# 默认情况下,参数值和参数名称是按函数声明中定义的顺序匹配起来的。
# 实例
# 让我们使用函数来输出"Hello World!":
def hello():
print("Hello World!")
hello() # 调用函数
# Hello World!
更复杂点的应用,函数中带上参数变量:
#比较两个数,并返回较大的数:
def max(a, b):
if a > b:
return a
else:
return b
a = 4
b = 5
print(max(a, b))
# 以上实例输出结果:
5
计算面积函数:
# 计算面积函数
def area(width, height):
return width * height
def print_welcome(name):
print("Welcome", name)
print_welcome("Runoob")
w = 4
h = 5
print("width =", w, " height =", h, " area =", area(w, h))
# 以上实例输出结果:
Welcome Runoob
width = 4 height = 5 area = 20
3.2 函数调用
定义一个函数:给了函数一个名称,指定了函数里包含的参数,和代码块结构。
这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从 Python 命令提示符执行。
如下实例调用了 printme() 函数:
# 定义函数
def printme( str ):
# 打印任何传入的字符串
print (str)
return
# 调用函数
printme("我要调用用户自定义函数!")
printme("再次调用同一函数")
以上实例输出结果:
我要调用用户自定义函数!
再次调用同一函数
3.3 return语句
return [表达式] 语句用于退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。之前的例子都没有示范如何返回数值,以下实例演示了 return 语句的用法:
# 可写函数说明
def sum( arg1, arg2 ):
# 返回2个参数的和."
total = arg1 + arg2
print ("函数内 : ", total)
return total
# 调用sum函数
total = sum( 10, 20 )
print ("函数外 : ", total)
# 以上实例输出结果:
函数内 : 30
函数外 : 30
3.4 那这部分我再补充一些
调用函数时,如果没有传递参数,则会使用默认参数。以下实例中如果没有传入 age 参数,则使用默认值:
#可写函数说明
def printinfo( name, age = 35 ):
# "打印任何传入的字符串"
print ("名字: ", name)
print ("年龄: ", age)
return
#调用printinfo函数
printinfo( age=50, name="runoob" )
print ("------------------------")
printinfo( name="runoob" )
#以下实例输出结果:
名字: runoob
年龄: 50
------------------------
名字: runoob
年龄: 35
另外也可以引用外部函数,通过import来实现导入,在这里不在赘述,仅给出一个实例吧!例如导入numpy库:
>>>import numpy
# 却出现了以下错误结果,说明没有numpy该模块,不要担心,我们来下载导入
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'numpy'
不用怕,我们启动CMD命令窗,快捷键:win+R,然后输入cmd回车即可。一点提示了:这里win键就是键盘上空格键左边第二个按键,键上面有个像窗户的图标,哈哈!上面的错误显示缺少numpy库,我们直接输入pip install numpy即可,如下图所示:
这里我想说的是有的第三方库由于下载源在国外,所以推荐更改下载源,以便后面快速下载,当然现在入门学习也可以不用,记住pip install **就行了,如何更改下载源,请您访问:
完成之后,下来我们开始使用
# 实现两个向量点积
import numpy as np
a = np.array([1,2])
b = np.array([11,12])
print(np.dot(a,b))
# 35
函数这部分写的可能不太好,大家有什么疑问,欢迎评论留言交流!
4 结束语
本期下篇就写到这里了,介绍了流程控制、其他常用的数据类型以及函数的使用,到目前为止,本期Python语言快速入门就结束啦,后面可能会进行相应细节知识的补充,以及Python语言的应用。此外在Python语言中类(class)这个概念也很重要,后面有时间在做以补充,完成了这些理论知识学习后,我们就可以开始软件设计以及别的方面应用。感谢你的阅读,欢迎点赞和分享支持!
更多内容可以关注我的微信公众号:我的学习交流小平台
了解一下我哈:关于我(About Me!)