# 4、可变参数\return
# 可变参数:参数个数不固定 。调用的时候来确定有几个参数。
# 第一种:*args 在函数内部,是以元组的形式来表示。
def my_args(*args): # 放在位置参数,默认参数之后。#arguments
print(args)

# my_args(12,34,True,False,[1,2])
# my_args("hello",True)
# my_args()

# 第二种:**kwargs 在函数内部,是以字典的形式来表达。
def my_kwargs(**kwargs):
print(kwargs)

# my_kwargs(name="xj") # key=value
# my_kwargs(name="xj",sex="female",city="changsha")

# 一个函数的定义当中,都有*args,**kwargs.先*args,再**kwargs

def my_all_args(num, *args, **kwargs):
print(num, args, kwargs)
if "my_class" in kwargs:
if kwargs["my_class"] == "python17":
print("正确!")

# my_all_args(12,23,34,45,hello="world",my_class="python17")
#
# # 解包 *元组 *(23,34,45) = 23,34,45
# my_all_args(12,*(23,34,45),hello="world",my_class="python17")

# return 函数返回
# 取钱ATM
# 取钱功能(ATM) == 吐出来==返回
# 输入数据:银行卡(8)、密码(6)、金额(3000)
# 输出数据:人民币、卡、凭证
# 有进有出

# return
# 1、代表函数返回数据
# 2、终止函数调用 。
# 在执行函数内部代码的时候,如果遇到了return关键字,意味着函数调用结束。不管后面还有没有逻辑处理。

# def get_money_from_atm(cardNo,passwd,count):
# # 判断数据是否符合要求,如果不符合,不能取钱。
# if len(cardNo) == 8 and len(passwd) == 6 and 100 < count < 3000:
# print("可以取钱,取钱金额为{}".format(count))
# return count # return 返回值

# 3、return 后面可以不用跟任何的数据。实际上代表的是返回的None 。return None

def get_money_from_atm(cardNo,passwd,count):
# 判断数据是否符合要求,如果不符合,不能取钱。直接退出函数调用
if len(cardNo) != 8 or len(passwd) != 6 or (count > 3000 or count < 100):
return

# print("可以取钱,取钱金额为{}".format(count))
# 符合取钱的条件下,返回取款金额
return count,cardNo

# 4、调用函数的时候,如果函数有返回值,要主动用变量接收函数的返回值。
# 5、return 任意类型的数据。
# 6、定义函数的时候,没有用到return.请问调用函数,有返回值?有,为None
# money = get_money_from_atm("12345678","123456",500)
# print(money)
# money,cardNo = get_money_from_atm("12345678","123456",500)
# print(money,cardNo)
# money = get_money_from_atm("123456","123456",500)
# print(money)

def buy_somethings(price,money): #price是物品的价格。money是你的钱。
if money >= price:
print("可以买!")
else:
print("买不起!!")

# 调用函数。
# buy_somethings(600,money)
# buy_somethings(200,money)
# buy_somethings(1000,money)

# def get_maxNum_in_list(num_lists):
# for index in range(len(num_lists) - 1):
# if num_lists[index] > num_lists[index + 1]:
# num_lists[index], num_lists[index + 1] = num_lists[index + 1], num_lists[index]
# print(num_lists[-1])
#
#
# list_b = [88,96,12,108,33]
# res = get_maxNum_in_list(list_b)
# print("1111111111111111111111111111111111")
# print(res)

def get_money_from_atm_v2(cardNo,passwd,count):
# 判断数据是否符合要求,如果不符合,不能取钱。直接退出函数调用
if len(cardNo) != 8 or len(passwd) != 6 or (count > 3000 or count < 100):
return

# print("可以取钱,取钱金额为{}".format(count))
# 符合取钱的条件下,返回取款金额
return count,cardNo

def buy_somethings_v2(price, money): #price是物品的价格。money是你的钱。
if money >= price:
print("可以买!")
else:
print("买不起!!")

cardNo = input("卡号:")
passwd = input("密码:")
gkd = input("取钱金额:")
price = input("物品价格为:")
# 1、取钱
res = get_money_from_atm_v2(cardNo, passwd, int(gkd))
print(res)
if res is not None:
# 2、拿着你取的钱,去买东西
buy_somethings_v2(int(price), res[0])

python学习-def1的更多相关文章

  1. Python学习--04条件控制与循环结构

    Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...

  2. Python学习--01入门

    Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...

  3. Python 学习小结

    python 学习小结 python 简明教程 1.python 文件 #!/etc/bin/python #coding=utf-8 2.main()函数 if __name__ == '__mai ...

  4. Python学习路径及练手项目合集

    Python学习路径及练手项目合集 https://zhuanlan.zhihu.com/p/23561159

  5. python学习笔记-python程序运行

    小白初学python,写下自己的一些想法.大神请忽略. 安装python编辑器,并配置环境(见http://www.cnblogs.com/lynn-li/p/5885001.html中 python ...

  6. Python学习记录day6

    title: Python学习记录day6 tags: python author: Chinge Yang date: 2016-12-03 --- Python学习记录day6 @(学习)[pyt ...

  7. Python学习记录day5

    title: Python学习记录day5 tags: python author: Chinge Yang date: 2016-11-26 --- 1.多层装饰器 多层装饰器的原理是,装饰器装饰函 ...

  8. [Python] 学习资料汇总

    Python是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大且完善的通用型语言,已经有十多年的发展历史,成熟且稳定.Python 具有脚本语言中最丰富和强大的类库,足以支持绝大多数日常应用 ...

  9. Python学习之路【目录】

    本系列博文包含 Python基础.前端开发.Web框架.缓存以及队列等,希望可以给正在学习编程的童鞋提供一点帮助!!! 目录: Python学习[第一篇]python简介 Python学习[第二篇]p ...

随机推荐

  1. 解构ffmpeg(二)

    通过比较DirectShow和ffmpeg两者的FilterGraph,分析ffmpeg的FilterGraph运作. 首先FilterGraph是一个图,图由点和边构成.在FilterGraph中的 ...

  2. 移动端vue项目的图片上传插件

    有一移动端项目,使用的vant-ui.可是vant自带的Uploader似乎不支持一次选择多张图片上传的功能. 于是乎:在https://www.npmjs.com/查找发现找到 vue-upload ...

  3. cenos7搭建gitlab

    git.github和gitlab的区别 git:是一种版本控制系统,是一个命令,是一种工具 gitlib:是基于实现功能的开发库 github:是一个基于git实现的在线代码仓库软件 gitlib可 ...

  4. mac系统下docker安装配置mysql详细步骤

    上文介绍了MacOS安装Docker傻瓜式教程,安装好后第一件事就决定把本地数据库迁移过来,那么首先就得安装mysql,下面就开始我们的安装之旅吧. 一.docker配置镜像加速器 我们使用docke ...

  5. java 获取当前年份 月份 日期

    import java.util.Calendar; public class Main {  public static void main(String[] args) {    Calendar ...

  6. 修改json源码支持datetime序列化

    修改json源码支持datetime序列化 import json import datetime now = datetime.datetime.today() json.dumps(now) 抛出 ...

  7. jQuery.hasClass() 函数详解

    jQuery.hasClass() 函数详解 hasClass()函数用于指示当前jQuery对象所匹配的元素是否含有指定的css类名. 该函数属于jQuery对象(实例). 语法 JavaScrip ...

  8. 手机端web(iPad)页面自适应js

    有关编写手机页面(ipad页面)自适应的方法有很多,比如:bootstrap,rem等等.下面分享给大家一个js控制viewPort视区自适应缩放的方法(我给它命名为phone.js): 将phone ...

  9. C# MVC 过滤器

    APS.NET MVC中(以下简称“MVC”)的每一个请求,都会分配给相应的控制器和对应的行为方法去处理,而在这些处理的前前后后如果想再加一些额外的逻辑处理.这时候就用到了过滤器. MVC支持的过滤器 ...

  10. tp5实现支付宝电脑支付(详解)

    首先吐槽一下支付宝的官方文档,它只是简单介绍一下开发的流程和参数,而对于新人来说如果只看它的官方文档很多时候是看不懂的,我也是边看文档边网上查资料才把它弄懂.下面我详细介绍支付宝的电脑支付是如何实现 ...