python基础——判断、循环、函数
Python基础三——判断、循环、函数
实验目的
1.掌握判断结构的语法
2.掌握循环结构的语法
3.掌握函数编程
实验原理
Python的比较操作符:
在Python中,定义函数的语法如下:
def 函数名([参数列表]):
‘’‘注解’’’
函数体
定义函数时,需要注意的问题:①函数形参不需要声明其类型,也不需要指定函数返回值类型,②即使该函数不需要接受任何参数,也必须保留一对空的圆括号,③括号后面的冒号必不可少④函数体相对于def关键字必须保持一定的空格缩进。
实验环境
Python 3.5以上
PyCharm
实验内容
1.选择结构
2.循环结构
3.函数编程
4.lambda表达式
实验步骤
一、选择结构
Python的条件分支语法:
1.下面我们打开Pycharm进行,if判断条件练习。
双击打开Pycharm
2.创建一个新项目,名为demo
3.创建一个Python文件,名为guess_data
4.编写代码:利用if判断来制作一个猜数字的小游戏:
# 正确数字为5
enter_data = input('请输入您猜的数字:')
guess = int(enter_data)
if guess == 5:
print('恭喜您猜对啦')
else:
if guess > 5:
print('猜大了')
else:
print('猜小了')
print('游戏结束')
5.选中guess_data文件,右键点击Run“guess_data”运行代码
运行结果如下
二、循环结构
Python的While循环语法:当while条件为ture的时候执行循环体中的内容,当while条件为false时,不执行循环体中的内容
6.我们来为刚才的猜数字的小游戏代码加入while循环,使之更加健壮(将下面代码写入guess_data文件并覆盖原来代码):
#引入random模块
import random
#调用random模块中的randint()函数,它会随机的返回一个十以内整数
secret = random.randint(1,10)
print('来玩个猜数字游戏吧')
print(secret)
enter_data = input('您猜的数字是什么:')
guess = int(enter_data)
guess_num = 1
if guess == secret:
print("恭喜您猜对啦,游戏结束!")
else:
#加入while循环,如果循环次数小于3则继续执行,反之停止
while guess != secret and guess_numsecret:
enter_data = input('猜大了,请重猜:')
elif guess < secret:
enter_data = input('猜小了,请重猜:')
guess = int(enter_data)
guess_num += 1
if guess == secret:
print("恭喜您猜对啦,游戏结束!")
elif guess != secret and guess_num ==3:
print("次数用光了,游戏结束!")
运行结果:
Python的For循环语法
7.双击打开终端模拟器,输入python3,进入Python交互式环境,在里面进行下面的多个命令。
使用for循环遍历range(10)对象
for i in range(10):
print(i)
三、函数结构
在Python中,定义函数时不需要声明函数的返回类型,而是使用return语句结束函数执行的同时返回任意类型的值,函数返回值类型与return语句返回表达式的类型一致。无论return语句出现在函数的什么位置,一旦得到执行将直接结束函数的执行。如果函数没有return语句或者执行不返回任何值的return语句,Python将认为该函数以return None结束,即返回空值。
8.下面的函数用来计算斐波那契数列中小于参数n的所有值。
#定义函数,括号里的n是形参
def fib(n):
#accept an in integer n. return the numbers less than n in Fibonacci sequence.
a,b=1,1
while a<n:
print(a,end=' ')
a,b=b,a+b
print()
#调用该函数的方式为:
fib(1000)
注意:在定义函数时,开头部分的注释并不是必须的,但是如果为函数的定义加上一段注释的话,可以为用户提供友好的提示和使用帮助。
9.在调用函数时,一定要注意函数有没有返回值,以及是否会对函数实参的值进行修改
a_list=[1,2,3,4,9,5,7]
print(sorted(a_list))
#原列表内容没变
print(a_list)
#列表对象的sort()方法没有返回值
print(a_list.sort())
print(a_list)
10.拓展知识:函数属于可调用对象,由于构造函数的存在,类也是可以调用的。另外,任何包含__call__()方法的类的对象都是可调用的。
def linear(a,b):
#函数是可以嵌套定义的
def result(x):
return a*x+b
return result
下面代码演示了可调用对象类的定义
class Linear:
def __init__(self,a,b):
self.a,self.b=a,b
def __call__(self,x):
return self.a*x +self.b
使用上面的嵌套函数和类这两种方式中任何一个,都可以通过以下的方式来定义一个可调用的对象:
taxes=linear(0.3,2)
然后通过下面的方式来调用该对象
taxes(5)
函数定义时,圆括号内是使用逗号分隔开的形参列表,一个函数可以没有参数,但是定义和调用时一对圆括号必须要有,表示这是一个函数并且不接受参数。函数调用时向其传递实参,根据不同的参数类型,将实参的值或引用传递给形参。
11.对于绝大多数情况,在函数内部直接修改形参的值不会影响实参。
def addOne(a):
print(a)
#得到新的变量
a+=1
print(a)
a=3
addOne(a)
print(a)
12.在一些特殊情况下,可以通过特殊的方式在函数内部修改实参的值。
#修改列表元素值
def modify(v):
v[0]=v[0]+1
a=[2]
modify(a)
print(a)
#为列表增加元素
def modify(v,item):
v.append(item)
a=[2]
modify(a,3)
print(a)
#修改字典元素值或字典增加元素
def modify(d):
d['age']=38
a={'name':'Dong','age':37,'sex':'Male'}
modify(a)
print(a)
传递参数时的序列解包
13.调用含有多个参数的函数时,可以使用Python列表,元组、集合、字典以及其他可迭代对象作为实参,并在实参名称前加一个星号“*”,Python解释器将自动进行解包,然后传递给多个单变量形参。
def demo(a,b,c):
print(a+b+c)
#列表
seq=[1,2,3]
demo(*seq)
#元组
tup=(1,2,3)
demo(*tup)
#字典
dic={1:'a',2:'b',3:'c'}
demo(*dic)
#集合
Set={1,2,3}
demo(*Set)
注意:字典若想作为实参时默认使用字典的“键”,如果需要将字典中“键:值”元素作为参数则需要使用items()方法明确说明,如果需要将字典的“值”作为参数则需要调用字典的values()方法明确说明。
四、lambda表达式
14.lambda表达式用来声明匿名函数,即没有函数名临时使用的函数。lambda表达式只可以包含一个表达式,不允许包含复杂的语句,但表达式中可以调用其他函数,并支持默认参数和关键参数,该表达式的计算结果相当于函数的返回值。
f=lambda x,y,z:x+y+z
#把lambda表达式作为函数使用
print(f(1,2,3))
#lambda表达式可以含有默认参数
g=lambda x,y=2,z=3:x+y+z
print(g(1))
#使用关键参数调用lambda表达式
print(g(2,z=4,y=5))
#lambda表达式作为函数的参数
L=[1,2,3,4,5]
print(map(lambda x:x+10,L))
#在lambda表达式中可以调用函数
def demo(n):
return n*n
a_list=[1,2,3,4,5]
map(lambda x:demo(x),a_list)
- 点赞
- 收藏
- 关注作者
评论(0)