Python 从入门到实战20(函数的返回值等)

        我们的目标是:通过这一套资料学习下来,通过熟练掌握python基础,然后结合经典实例、实践相结合,使我们完全掌握python,并做到独立完成项目开发的能力。

上篇文章我们讨论了函数的参数。今天我们继续学习一下函数的返回值。

1、返回值

函数执行后可以有返回值,也可以没有返回值。

没有返回值的例子:

#定义函数,传参有默认值
def greet(name,greetvalue ='GOOD morning!'):
    print(name,greetvalue)

如上面的函数调用后只是打印输出问候,没有返回值。

greet("mom")

需要返回值的时候通过return value  来实现,注意:在调用函数时,可以把这个返回值赋给一个变量,用于保存函数返回值以便后面使用。也可以有多个返回值

举例说明:

需求:如一个超市做活动,客户购买的商品满100打9折,满300打8折,满500打6折

编写一段代码实现计算,可以让客户输入每个商品的价格,输入0表示输入商品结束。

需要输出打折前的总共的消费金额,打折后商品的总价,参考代码:

#计算打折前,打折后商品的总价,传参进来时列表
def summary_pro(list_money):
    sum_money_pri = sum(list_money)  #计算列表中元素之和,即商品打折前总价
    if sum_money_pri >= 600:
        sum_money_new = sum_money_pri*0.6
    elif sum_money_pri >= 300:
        sum_money_new = sum_money_pri * 0.8
    elif sum_money_pri >= 100:
        sum_money_new = sum_money_pri * 0.9
    else:
        sum_money_new = sum_money_pri
    return sum_money_pri,sum_money_new
#计算商品打折的例子;可以通过函数输出打折前、打折后商品总价

#设置提示,请输入商品价格
print("\n请开始输入商品价格\n")

#可以将输入的商品价格放到列表存储
list_pro_money = []

#输入商品,然后插入到列表,一直到输入0结束
while True:
    pro_money = float(input("输入你要的商品金额,注意输入0为结束:"))#注意要转换为浮点数
    if int(pro_money) == 0: #注意,浮点数转换为整数,不然不等于0
        break
    else:
        list_pro_money.append(pro_money)  #商品金额插入到列表

#调用计算函数,输出打折前,打折后商品总价
sum_money = summary_pro(list_pro_money)
print("优惠前商品总价:{:.2f},优惠后商品总价:{:.2f}",sum_money[0],sum_money[1])

查看输出结果:

2、变量的作用域

变量的作用域是指程序代码能够访问变量的区域。若是超出该区域,访问就会报错。

一般根据变量的作用范围分为:局部变量、全局变量

1)局部变量

在Python中,局部变量是在函数内部定义的变量。它们只能在函数内部访问,函数外部无法直接访问。局部变量的作用范围仅限于函数内部,函数执行完毕后,局部变量会被销毁。若是在函数外调用就会发生异常。

举例说明:

#举例局部变量
def my_function():
    local_variable = "I am local"
    print(local_variable)
my_function()
print(local_variable)  #函数外调用,对应会报错

2)全局变量

局部变量在函数外没法使用,这时候可以使用全局变量,它能够作用于函数内外的变量。

可以两种方式实现全局变量的定义,1、变量在函数外部定义

2、变量在函数外部定义,但是使用global 来修饰

注意,我们最好使用第一种方式,第二种方式容易造成混乱。

第一种举例:

#student_greet全局变量,函数外可使用
student_greet = "Good morning!"
def student_morning(greet_cont):
    print(student_greet)
student_morning(student_greet)
print("见到学生说:",student_greet)

输出参考:

第二种举例:

messages = "我是一个兵,来自老百姓"
print("函数外部的:messages=",messages)
def out_messages():
    global messages    #内部变量被修改为全局变量
    messages = "我是一个兵,来自老百姓,不怕流血不怕牺牲"
    print("函数内部的:messages=", messages)
out_messages()
print("函数外部的:messages=",messages) #全局变量就被改变

输出参考:

3、匿名函数

匿名函数(lamda)是指没有名字的函数,应用在需要定义一个函数但是又不想费力命名这个函数的情况下使用。

这样的函数只使用一次。

参考语法:  result = lamada[arg1[,arg2,….,argn]]:expression

说明: result ---用于调用lamada 表达式

[arg1[,arg2,….,argn]]---可选参数,用于指定要传递的参数列表

expression  -----必选参数,用于指定实现具体功能的表达式

举例说明:

#使用lambda函数计算圆面积
r =10
area_circle = lambda r:math.pi*r*r
print("r 为10的圆面积为:{:.2f}".format(area_circle(r)))  #注意带参数r

输出结果:

r 10的圆面积为:314.16

举例2:

#按学生的总成绩排序
students_grade = [
    {'id': '1001', 'name': '无语', 'english': 98, 'python': 100, 'c': 96},
    {'id': '1002', 'name': '琦琦', 'english': 100, 'python': 96, 'c': 97},
    {'id': '1003', 'name': '明日', 'english': 99, 'python': 97, 'c': 95},
    {'id': '1004', 'name': '田珍', 'english': 93, 'python': 99, 'c': 98}
    ]   # 保存学生成绩的列表
result_grade = students_grade.sort(key =lambda x:x['english']+x['python']+x['c'])
print("学生成绩排序后结果:")
for item in students_grade: #遍历打印
    print(item)

输出结果参考:

今天先写学习到这里了,每天进步一点点。今天也要加油啊!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/425657.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SysML图例-农业无人机

DDD领域驱动设计批评文集>> 《软件方法》强化自测题集>> 《软件方法》各章合集>>

数据结构—双向链表

结构 带头链表里的头结点&#xff0c;实际为“哨兵位”&#xff0c;哨兵位结点不存储任何有效元素&#xff0c;只是站在这里“放哨 的” 实现双向链表 List.h #pragma once#include<stdio.h> #include<stdlib.h> #include<assert.h> #include<stdbool…

Mac 上,终端如何开启 proxy

前提 确保你的浏览器可以访问 google&#xff0c;就是得先有这个能力 步骤 查看网络的 http/https 还有 socks5 的 port配置 .zshrc 查看 port 点击 wifi 设置 以我的为例&#xff0c;我的 http/https 都是 7890&#xff0c; socks5 是 7891 查看代理的port 以我的软件…

文件误删除后的数据救援实战指南

在数字化时代&#xff0c;文件误删除成为了许多用户心头挥之不去的阴影。无论是手误点击了“删除”键&#xff0c;还是系统崩溃导致的数据丢失&#xff0c;文件一旦从我们的视线中消失&#xff0c;往往伴随着重要信息的流失和工作的中断。本文将深入探讨文件误删除的现象&#…

打造高效实时数仓,从Hive到OceanBase的经验分享

本文作者&#xff1a;Coolmoon1202&#xff0c;大数据高级工程师&#xff0c;专注于高性能软件架构设计 我们的业务主要围绕出行领域&#xff0c;鉴于初期采用的数据仓库方案面临高延迟、低效率等挑战&#xff0c;我们踏上了探索新数仓解决方案的征途。本文分享了我们在方案筛选…

Java开发安全及防护

目录 一、开发安全 二、XSS介绍及防范措施 2.1何为XSS 2.2XSS分类 2.3常用方法 三、SQL注入介绍及防范措施 3.1何为SQL注入 3.2常用方法 四、重放介绍及防范措施 4.1何为重放 4.2常用方法 一、开发安全 在学习安全之前&#xff0c;我们首先学习漏洞&#xff0c;知道…

视频格式转为mp4(使用ffmpeg)

1、首先安装ffmpeg&#xff0c;下载链接如下 https://www.gyan.dev/ffmpeg/builds/packages/ffmpeg-6.1.1-full_build.7z 安装后确保ffmpeg程序加到PATH路径里&#xff0c;cmd执行ffmpeg -version出现下图内容表示安装成功。 2、粘贴下面的脚本到文本文件中&#xff0c;文件后缀…

【Python笔记】PyCharm大模型项目环境配置

一、PyCharm创建新项目 二、更新pip版本 ...>python.exe -m pip install --upgrade pip 三、生成所需requirements配置文件 ...>pip freeze > requirements.txt 四、安装所需组件requirements.txt ...>pip install -r requirements.txt

基于代理的分布式身份管理方案

目的是使用分布式的联合计算分发去替换掉区块链中原有的类第三方可信中心的证书机制&#xff0c;更加去中心化。 GS-TBK Group Signatures with Time-bound Keys. CS-TBK 算法 Complete subtree With Time-bound Keys&#xff0c;该算法是用来辅助检测用户的签名是否有效&…

微服务_入门2

文章目录 一、Feign 一、Feign 来看我们以前利用RestTemplate发起远程调用的代码&#xff1a; 存在下面的问题&#xff1a; 代码可读性差&#xff0c;编程体验不统一参数复杂URL难以维护&#xff08;有时候访问一个页面所携带的参数是非常多的&#xff09; Feign是一个声明…

CSS——网格布局(display: grid)之上篇

CSS——网格布局&#xff08;display: grid&#xff09; 前面介绍了弹性布局&#xff0c;今天我们介绍一下网格布局。 什么是网格布局 CSS网格布局&#xff08;CSS Grid Layout&#xff09;是一种用于创建复杂网页布局的系统&#xff0c;它允许开发者以二维系统&#xff08;…

双三次插值及MATLAB实现

一、双三次插值的概念 双三次插值&#xff08;Bicubic interpolation&#xff09;&#xff0c;又叫双立方插值。在数值分析这个数学分支中&#xff0c;双三次插值是二维空间中最常用的插值方法。在这种方法中&#xff0c;函数f在点 (x0 ,y0) 的值不仅考虑其直接邻接点对其的影响…

Leetcode—1137. 第 N 个泰波那契数【简单】

2024每日刷题&#xff08;160&#xff09; Leetcode—1137. 第 N 个泰波那契数 记忆化搜索实现代码 class Solution { public:int tribonacci(int n) {int zero 0;int one 1;int two 1;if(n 0) {return zero;}if(n 1) {return one;}if(n 2) {return two;}int ans 0;fo…

MATLAB、FPGA、STM32中调用FFT计算频率、幅值及相位差

系列文章目录 文章目录 系列文章目录前言MATLABSTM32调用DSPSTM32中实现FFT关于初相位 FPGA 前言 最近在学习如何在STM32中调用FFT MATLAB 首先对FFT进行一下说明&#xff0c;我们输入N个点的数据到FFT中&#xff0c;FFT会返回N个点的数据&#xff0c;这些数据都是复数&#…

【ACM出版】第三届人工智能与智能信息处理国际学术会议(AIIIP 2024,10月25-27)

第三届人工智能与智能信息处理国际学术会议&#xff08;AIIIP 2024&#xff09; 2024 3rd International Conference on Artificial Intelligence and Intelligent Information Processing 中国-天津 | 2024年10月25-27日 | 会议官网&#xff1a;www.aiiip.net 官方信息 会议…

智能客服自动化新体验:Function Calling让问题处理更高效

Function Calling作为一项创新功能&#xff0c;正深刻改变着大模型与实际产业之间的融合方式。它不仅**为大模型增添了与外部工具和API无缝连接的能力&#xff0c;助力大模型向实际产业落地迈进&#xff1b;还极大地简化了开发者与模型间的交互流程&#xff0c;使得开发者从模型…

Leetcode—1184. 公交站间的距离【简单】

2024每日刷题&#xff08;161&#xff09; Leetcode—1184. 公交站间的距离 实现代码 class Solution { public:int distanceBetweenBusStops(vector<int>& distance, int start, int destination) {int clockwise 0;int counterclockwise 0;if(start > desti…

RabbitMQ(高阶使用)死信队列

文章内容是学习过程中的知识总结&#xff0c;如有纰漏&#xff0c;欢迎指正 文章目录 一、什么是死信队列&#xff1f; 二、死信队列使用场景 三、死信队列如何使用 四、打车超时处理 1.打车超时实现 以下是本篇文章正文内容 一、什么是死信队列&#xff1f; 先从概念解释上搞…

linux入门到实操-4 linux系统网络配置、连接测试、网络连接模式、修改静态IP、配置主机名

教程来源&#xff1a;B站视频BV1WY4y1H7d3 3天搞定Linux&#xff0c;1天搞定Shell&#xff0c;清华学神带你通关_哔哩哔哩_bilibili 整理汇总的课程内容笔记和课程资料&#xff08;包含课程同版本linux系统文件等内容&#xff09;&#xff0c;供大家学习交流下载&#xff1a;…

【C++算法】前缀和

前缀和 题目链接 前缀和https://www.nowcoder.com/practice/acead2f4c28c401889915da98ecdc6bf?tpId230&tqId2021480&ru/exam/oj&qru/ta/dynamic-programming/question-ranking&sourceUrl%2Fexam%2Foj%3Fpage%3D1%26tab%3D%25E7%25AE%2597%25E6%25B3%2595%2…