# 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. connected datagram 与TCP连接的区别

    TCP连接流程是TCP协议的一部分,需要经过三次握手.而connected datagram虽然使用了socket的同样的函数connect,但是UDP协议并不包含连接流程,也就是UDP实际上并没有真 ...

  2. Flex调用本地文件分析

    最近在用Flex做一个相册的功能,因为图片数据很多,所以想调用本地文件的方式做. 但是B/S的缘故,很多安全上的限制给我造成了不小的麻烦,把我这个小菜鸟弄的晕头转向. 第一,刚开始,查了很多资料发现都 ...

  3. 2019-9-20:渗透测试,基础学习,phpstudy搭建Wordpress,Burpsuite抓取WorePress cms的post包

    一.搭建WordPress的cms网站管理系统 1,下载Wordpress cms源码,下载地址:https://wordpress.org/download/ 2,将源码解压到phpstudy目录下 ...

  4. Theano中的导数

    计算梯度 现在让我们使用Theano来完成一个稍微复杂的任务:创建一个函数,该函数计算相对于其参数x的某个表达式y的导数.为此,我们将使用宏T.grad.例如,我们可以计算相对于的梯度 import ...

  5. OSI层次模型

    ISO:国际标准化组织 层(layer):描述所有的有效的通讯过程,并把逻辑上的组叫做层. 分层优点: 促进标准化工作,允许各个供应商进行开发 各层之间相互独立,把网络操作分成低复杂度性单元 灵活性好 ...

  6. 三分钟带你入门 redis 高可用架构之哨兵

    什么是哨兵? 哨兵(Sentinel)是 redis 的高可用性解决方案,前面我们讲的主从复制它是高可用的基础,需要人工介入才能完成故障转移,哨兵可以解决这个问题,在主从复制情况下,当主节点发生故障时 ...

  7. 安装软件包的三种方法、RPM包介绍、rpm、yum工具用法、yum搭建本地仓库

    第5周第3次课(4月18日) 课程内容: 7.1 安装软件包的三种方法7.2 rpm包介绍7.3 rpm工具用法7.4 yum工具用法7.5 yum搭建本地仓库 7.1 安装软件包的三种方法 rpm工 ...

  8. exc_bad_instruction(code=EXC_I386_INVOP,subcode=0x0) 错误

    对象存储异常 对象存储要遵守NSCoding协议 #import "EmotionModel.h" @interface EmotionModel()<NSCoding> ...

  9. js递归优化

    递归优化 递归在我们平时撸码中会经常用到,不过可能很多人不知道递归的弊端,就是会导致调用栈越来越深.如果没有节制的使用递归可能会导致调用栈溢出. 那什么是递归呢? 递归调用是一种特殊的嵌套调用,是某个 ...

  10. Apache ServiceComb 开源两周年,聊聊其与微服务的前世今生

    欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...