一、条件控制
Python条件语句是通过一条或多条语句的执行结果(true或者false)来决定执行的代码块。
1、if语句
Python中if语句格式为:
if condition1: #为true时将执行statement的语句,如果condition1为false则将判断condition2
statement1
elif condition2: #如果condition2为true将执行statement2语句,如果condition2为false则执行statement3语句。
statement2
else:
statement3
注意:
1、Python中的elif是代替了else if,所以if关键字为:if-elif-else
2、每个条件后面都要使用冒号,表示接下来要满足条件后的语句。
3、Python中没有switch-case语句。
以下是一个简单的if-else语句。定义一个变量a=1。如果a小于9则进入if语句。如果a除以2取余为0则输出nice,否则输出bad:
a=1
while a<9:
if(a % 2 ==0):
print(a,'nice')
else:
print(a,'bad')
a+=1
#输出结果
1 bad
2 nice
3 bad
4 nice
5 bad
6 nice
7 bad
8 nice
下面我们进行一个复杂的例子。计算狗的年龄。
age=int(input("请输入你家狗狗的年龄:"))
if age<=0:
print("你在逗我玩呢?")
elif age==1:
print("相当于14岁的人")
elif age==2:
print("相当于22岁的人")
elif age>2:
human=22+(age-2)*5
print("对应人类的年龄为:",human)
#输出结果
请输入你家狗狗的年龄:3
对应人类的年龄为: 27
下面实例演示一个数字猜谜游戏。
number = 7
guess = -1
print("数字猜谜游戏!")
while guess != number:
guess = int(input("请输入你猜的数字:"))
if guess == number:
print("恭喜,你猜对了!")
elif guess < number:
print("猜的数字小了...")
elif guess > number:
print("猜的数字大了...")
#输出结果
数字猜谜游戏!
请输入你猜的数字:9
猜的数字大了...
请输入你猜的数字:1
猜的数字小了...
请输入你猜的数字:6
猜的数字小了...
请输入你猜的数字:8
猜的数字大了...
请输入你猜的数字:7
恭喜,你猜对了!
2、if嵌套
在嵌套if语句中可以把if语句放在另一个if语句中。格式为:
if condition1:
statement1
if condition2:
statement2
elif condition3:
statement3
else:
statement
elif condition4:
statement4
else:
statement
以下是一个简单的例子:
number=int(input("输入一个数字:"))
if number % 2 ==0:
if number % 3 ==0:
print("你输入的数字可以整除2和3")
else:
print("你输入的数字可以被2整除,但不能整除3")
else:
if number %3 ==0:
print("你输入的数字能被3整除,但不能被2整除")
else:
print("你数入的数字不能被2和3整除")
#输出结果
输入一个数字:30
你输入的数字可以整除2和3
二、循环语句
Python中的循环语句有for和while。
1、while循环
while语句的格式为:
while condition:
statement
下面我们来做一个简单的例子:
a=0
while a<10:
print(a)
a+=1
#输出结果
0
1
2
3
4
5
6
7
8
9
下面我们来做一个复杂的例子,计算1到100的和:
start=1
end=100
sum=0
while start<=end:
sum=sum+start
start+=1
print("1到100的总和为:",sum)
#输出结果
1到100的总和为: 5050
2、无限循环
无限循环就是我们设置的条件永不为false,我们通过实例来练习以下吧~
a=5
while a==5:
number=int(input("请输入一个数字:"))
print("你输入的数字为:",number)
print("good bye!")
#输出结果
请输入一个数字:2
你输入的数字为: 2
请输入一个数字:8
你输入的数字为: 8
请输入一个数字:78
你输入的数字为: 78
请输入一个数字:5
你输入的数字为: 5
请输入一个数字:
从例子中可以看到运行之后的结果一直循环。如果想退出无限循环可以使用Ctrl+C退出。
3、while循环使用else语句
语法格式为:
while condition:
statement1
else:
statement2
下面我们来做一个简单的例子:
a=4
while a<8:
print(a,"<8")
a+=1
else:
print(a,">=8")
#输出结果
4 <8
5 <8
6 <8
7 <8
8 >=8
4、for语句
for variable in condition
statement1
else:
statement2
a=["hello","nice","random","python"]
for x in a:
print(x)
#输出结果
hello
nice
random
python
以下for循环用到了break语句,break语句用于跳出当前循环体。
a=["hello","nice","random","python"]
for x in a:
if x=="random":
print("RA")
break
print(x)
print("完成循环!")
#输出结果
hello
nice
RA
完成循环!
5、range函数
range函数用于遍历数字序列,它会生成数列。
for x in range(5):
print(x)
#输出结果
0
1
2
3
4
当然可以使range指定数字开始并指定不同的增量。如:
for x in range(0,20,4): #0为指定开始数字,20为最大值,4为增量
print(x)
#输出结果
0
4
8
12
16
结合range()函数于len()来遍历一个序列:
a=["hello","nice","random","python"]
for x in range(len(a)):
print(x,a[x])
#输出结果
0 hello
1 nice
2 random
3 python
6、break和continue语句及循环中的else字句
- break语句可以跳出for和while的循环体,如果从循环中终止,任何对应的循环else将不执行。
- continue语句用来告诉Python跳过当前循环中剩余的语句,然后继续下一轮的循环。
以下为break语句练习:
for x in "python":
if x=="h":
break
print(x)
a=10
while a>0:
a-=1
if a==4:
break
print(a)
#输出结果
p
y
t
9
8
7
6
5
以下为continue语句练习:
for x in "python":
if x=="h":
continue
print(x)
a=10
while a>0:
a-=1
if a==5:
continue
print(a)
#输出结果
p
y
t
o
n
9
8
7
6
4
3
2
1
0
三、迭代器和生成器
迭代是Python最强大的功能之一,是访问集合元素的一种方式。迭代器是一个可以记住遍历位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问玩结束,而且只往前不会后退。
迭代器有二个基本的方法:iter()和next()。字符串、列表、元祖都可用于创建迭代器。如:
list=[1,2,3,4]
a=iter(list)#创建迭代器对象
print(next(a))#输出迭代器的下一个元素
print(next(a))
#输出结果
1
2
上面的例子大家是不是已经发现输出很笨拙,我们可以使用for语句来进行简单的迭代:
list=[1,2,3,4]
a=iter(list)#创建迭代器对象
for x in a:
print(x)
#输出结果
1
2
3
4
1、创建一个迭代器
把一个类作为迭代器使用需要在类中实现二个方法:__iter__()和__next__()
- __iter__()方法返回一个特殊的迭代器对象,这个迭代器对象实现了__next__()方法并通过StopIteration异常标识迭代完成
- __next__()方法会返回下一个迭代器对象。
以下我们来做一些例子来增加印象吧,创建一个返回数字的迭代器,初始值为1,逐步递增1:
class number:
def __iter__(self):
self.a=1
return self
def __next__(self):
x=self.a
self.a+=1
return x
myclass=number()
myiter=iter(myclass)
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
#输出结果
1
2
3
4
2、StopIteration
StopIteration异常用于标识迭代的完成,防止出现无限循环的情况。
以下例子为在20此迭代后停止执行:
class number:
def __iter__(self):
self.a=1
return self
def __next__(self):
if self.a<5:
x=self.a
self.a+=1
return x
else:
raise StopIteration
myclass=number()
myiter=iter(myclass)
for x in myiter:
print(x)
#输出结果
1
2
3
4
3、生成器
在Python中,使用yield的函数被称为生成器。生成器是一个返回迭代操作,简单理解就是生成器就是一个迭代器。
调用生成器运行的过程中,每次遇到yield时函数会暂停并保存当前所有的运行信息,返回yield的值并在下一次执行next()方法时从当前位置继续运行。
以下实例使用yield实现悲波那契数列:
def fibonacci(n):
a,b,counter=0,1,0
while True:
if(counter>n):
return
yield a
a,b=b,a+b
counter+=1
f=fibonacci(10)
while True:
try:
print(next(f),end=" ")
except StopIteration:
sys.exit()
#输出结果
0 1 1 2 3 5 8 13 21 34 55
四、函数
1、定义一个函数
- 函数代码块以def关键字,后面接标识符名称和()
- 参数和自变量放在()里面,括号里面用于定义参数
- return表达式结束函数,选择性返回一个值调用,如果不写入return表达式相当于返回none。
def max(a,b): #a,b为函数参数,使用def关键字定义函数
if a>b:#以下为函数体
return a #return关键字设置返回值
else:
return b
以下我们来进行一个简单的实例,比较二个数并返回最大值:
a=15
b=4
def max(a,b):
if a>b:
return a
else:
return b
print(max(a,b))
#输出结果
15
下面来做一个简单的面积计算:
width=5
height=8
def area(width,height):
return width*height
print("width=",width,"height=",height,"area=",area(width,height))
#输出结果
width= 5 height= 8 area= 40
2、函数调用
在上面我们学会了如何定义一个函数,定义完一个函数后我们可以通过另一个函数调用执行,也可以直接用Python命令符执行。
下面进行调用myhs函数调用:
def myhs(str):
print(str)
return
print(myhs("调用自定义的函数"))
print(myhs("再次调用同一函数"))
#输出结果
调用自定义的函数
None
再次调用同一函数
None
3、Python不可变对象
在Python中string、tuples、number是不可变对象,list、dictionary是可变对象。
- 不可变对象:当变量赋值a=4后想在次赋值为a=8,实际是新生成一个int值为8的对象,而4被丢弃。
- 可变对象:变量赋值list=[1,2,3]后想再次赋值list[0]=5,实际是将list的第一个元素值更改。
下面我们来进行实际操作:
a=4
def myhs(a):
print(id(a))
a=8
print(id(a))
a=1
print(id(a))
print(myhs(a))
#输出结果
140737390712480
140737390712480
140737390712704
4、可变对象
可变对象在函数里修改的参数,那么原始的参数也被改变了,如:
list=[1,2,3]
def mylist(list):
print(list)
return
list[0]=10
mylist(list)
print(list)
#输出结果
[10, 2, 3]
[10, 2, 3]
5、return语句
return表达式用于退出函数,选择性的调用返回一个表达式。不带参数的return语句返回none。
def myhs(a,b):
total=a+b
print(total)
return total
total=myhs(5,4)
print(total)
#输出结果
9
9
五、数据结构
1、列表
在上一章节中我们提到在Python中列表是可变的,而元祖是不可变的。
Python中列表的方法:
- list.append(x):把元素添加到列表结尾
- list.insert(i,x):把指定位置插入到元素中。i为准备插入到其前面的那个元素。
- list.remove(x):删除列表中x值
- list.clear(x):移除列表中的所有项。
还有很多列表的方法在这里就不过多解释,大家可以在网上搜索更多信息。
2、将列表当做栈使用
列表方法使得列表可以方便在作为一个栈使用,栈作为特定的数据结构,最先进入的元素被最后一个释放(先进后出,后进先出)。可以用append()方法把一个元素添加到栈。如:
a=[1,2,3]
a.append(4)
a.append(5)
print(a)
#输出结果
[1, 2, 3, 4, 5]
3、把列表当做队列使用
可以吧列表当做队列使用,只是在队列里第一加入的元素,第一个取出来。但是列表这样的目的效率不高。可以在列表最后添加或者弹出元素速度块,但在列表里插入或者从头部弹出速度不快。
from collections import deque
a=deque(["random","nice","john"])
a.append("applle")
print(a.popleft()) #输出第一个元素
print(a.popleft()) #输出第二个元素
print(a) #输出剩余的元素
#输出结果
random
nice
deque(['john', 'applle'])
4、列表推导式
列表推导式从序列创建列表的简单途径。每个列表推导式在for后跟一个表达式,就会有多个for或者if字句。返回结果是根据表达从其后的for和if上下文环境中生成出来的列表。
#实例1:
a=[2,5,8]
print([3*x for x in a])#计算每个数乘以3的值
#实例2:
print([[x,x**2] for x in a])#计算平方的值
#输出结果
[6, 15, 24]
[[2, 4], [5, 25], [8, 64]]
下面我们用if字句来添加条件:
a = [2, 5, 8]
print([3*x for x in a if x>3])
print([[x,x**2] for x in a if x>3])
#输出结果:
[15, 24]
[[5, 25], [8, 64]]