Python入门教程(三)

一、条件控制

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]]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值