扇贝编程python学习笔记-基础篇3

Genius only means hard-working all one's life.
天才只意味着终身不懈的努力。

第五关

学习用时:30min
随堂测验+上机作业:25min
随堂作业正确率:7/7

1.函数的定义、组成

1.定义:函数是一段组织好的、可重复使用的、用来实现特定功能的代码快。
python内置函数len()举例

print(len('生如夏花之灿烂'))
# 输出结果:7

2.函数的组成:

1.告诉计算机,要定义一个函数;
2.函数的名字是什么;
3.这个函数需要输入什么参数;
4.参数的处理过程是什么样的;
5.把什么样的处理结果还给输入者。

# def是函数定义的关键字(define 的缩写,意为“定义”),f 是我们取的函数名。
#函数名后有一对英文括号,括号里面是我们设定的参数(也就是我们之前说的输入),最后用一个英文冒号结尾。
# 冒号后有缩进的代码块,这部分叫函数体,这部分就是函数功能实现和输出返回值的地方。
# 最后一行的 return 用于返回函数处理的结果,return 后面的值称为函数的返回值。

def f(x): 
  y = 2 * x + 1
  return y
  
# 下一行代码调用 f 函数,并赋值给变量 result
result = f(3)
print(result)
# 输出:7
# 也可以将后两行简写为
print(f(3))

  注意:函数代码块快的缩进问题。

3.函数的执行顺序
  函数的内部,return 语句一旦执行之后,剩下的语句将不再执行。

# 例1 这样的情况下 将不会有任何打印结果,因为return y 后,函数将不在执行
def f(x):
  y = 2 * x + 1
  return y
  print(y)

f(3)

#---------------------------------------------------------------------------------------

# 例2  下面这种情况下没有return依旧打印出结果,但缺点是结果打印完之后就没有了,无法将结果进行有效的利用,相当于“阅后即焚”
def f(x):
  y = 2 * x + 1
  print(y)

f(3)
# 输出:7

#---------------------------------------------------------------------------------------

# 例3  强行获取函数结果
def f(x):
  y = 2 * x + 1
  print(y)

# 用 result 变量获取结果
result = f(3)
# 打印结果为 7 ,但是返回结果为 None,赋值给 result

print(result + 1)
# 报错: TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
# (类型错误,不支持 None 和整数的相加)

  上面例3中,print(result + 1) 并不能让我们获得 8 这个目标值,因为函数内部没有 return 语句,y = 7 打印后就销毁了,然后函数暗搓搓地为你返回了 None ,并赋值给 result。

2.函数中的参数

  对于函数的参数:形参实参
  形参是形式上的参数(上面的x)的缩写,表明这里有一个叫x的参数,实参是实际上的参数(上面的3)的缩写,实参传给函数后x被赋值为3。
  Python 函数的命名规范:函数名应该为小写,可用下划线连接多个英文单词,比如在习题中用 calc_age 的函数名来编写年龄计算器。函数名要有一定的描述性,避免使用 a、b、c 这样过于简单的英文字母。

# 练习1
# 定义一个名为 calc_age 的函数
# calc_age() 函数的输入为出生年份,输出为年龄
# 在屏幕上输出 calc_age() 函数的返回值

def calc_age(birth_yrear):
  age = 2020 - birth_yrear
  return age
  
x = int(input("请输入出生年份"))
print (calc_age(x))

  这里面我又犯了一个错误就是python函数的命名不符合规范,里面的

3.函数的作用

  DRY 原则 = Don’t repeat yourself = 不要重复自己
  如果多次遇到同样的问题,就应该抽象出一个共同的解决方法,尽量避免写重复的代码。
  另外:函数的参数和返回值都不是必选项,是可以没有的。
  下面的函数既没有参数,也没有返回值:

def say_hello(name):
  greetings = '你好啊~'
  print(greetings + name)

# 不用再 print 了,因为函数里用了 print 函数
say_hello('鸽子')
# 输出:你好啊~鸽子

# 练习 2  将这首诗打印5遍~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
def print_poetry():
  print('----------------')
  print('我打江南走过')
  print('那等在季节里的容颜如莲花的开落')
  print('春风不来,三月的柳絮不飞')
  print('你的心如小小的寂寞的城')
  print('恰若青石的街道向晚')
  print('跫音不响,三月的春帷不揭')
  print('你的心是小小的窗扉紧掩')
  print('我达达的马蹄是美丽的错误')
  print('我不是归人,是个过客……')
  
print_poetry()
print_poetry()
# 其他地方找的python中一个函数多次调用
for i in range(1,4):
 print_poetry()

写函数的注意点
1.定义函数时,要遵循语法规则,给函数和参数的命名要有可读性;
2.注意缩进规则,函数体中是实现函数功能的代码,前面一定要有统一的空格缩进;
3.我们用 函数名() 的形式调用函数,执行函数体中的代码,用关键字 return 返回函数的结果;
4.函数体中也可以没有 return,系统会默认 return None。
5.函数内部如果有 print(),只负责显示结果,不能将结果保留或者传给其它变量。

4.随堂练习

  计算多边形内角和的函数。 三角形内角和为 180°、四边形内角和为 360°
五边形内角和为 540°

# 输入内角和的边数
n = int(input("请输入所求内角和的边数:"))
# 定义求内角和的函数x为形参,新知识点是形参和实参可以是一个名字
def calc_degree(x):
  calc = (x - 2) * 180
  return calc

# 打印结果
print(str(n) + "边形内角和为" + str(calc_degree(n)))

5.学习巩固

定义一个名为 calc_profit 的函数;
该函数有一个参数,为当天卖出的奶茶数量;
函数的返回值为奶茶店当天的净利润(不需要单位);
通过 input() 函数获取当天卖出的奶茶数量;
调用函数并打印出奶茶店当天的净利润。

再定义一个名为 calc_perf 的函数;
该函数有一个参数,为当天的净利润(calc_profit() 函数的返回值);
该函数功能为:当净利润大于 2000 时打印 合格,否则打印 不合格;
使用 input() 函数获取当天卖出的奶茶数量;
调用函数并打印出奶茶店当天是否合格。

def calc_profit(n):                #n为每日饮料销量形参
  princ = 25                      #饮料价格
  cost  = 9                       #饮料成本
  jingli = princ - cost            #饮料净利润
  chengben = 500                   #每日成本
  money = jingli * n - chengben    #每日利润计算
  return money
  
def  calc_perf(money):
  if money > 2000:                 #每日纯利润业绩>2000合格 否则不合格
    print("合格")
  else:
    print("不合格")
  
# 输入每天销售额  
number = int(input("今天你卖了多少杯奶茶啊?"))
print(calc_profit(number))         #每日纯利润
calc_perf(calc_profit(number))     #每日业绩是否合格
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值