# 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. PHP产生不重复随机数的5个方法总结

    无论是Web应用,还是WAP或者移动应用,随机数都有其用武之地.在最近接触的几个小项目中,我也经常需要和随机数或者随机数组打交道,所以,对于PHP如何产生不重复随机数常用的几种方法小结一下 无论是We ...

  2. Microsoft Dynamics CRM 批量上传web资源(非官方WebResourceUtility)并替换实体图标

    背景: 去年以前可以按照目录WebResourceUtility批量上传web资源,昨天发现用不了了,拿到WebResourceUtility源码改了一下都不是很方便,感觉官方写的太冗余,太长了,跟我 ...

  3. Centos7編譯安裝LAMP平臺

    什麽是LAMP? 拆開看 L 就是Linux系統 A是Apache的縮寫 M.P則是MySQL和PHP的简写. 其实就是把Apache, MySQL以及PHP安装在Linux系统上,组成一个环境来运行 ...

  4. WPF 修改屏幕DPI,会触发控件重新加载Unload/Load

    修改屏幕DPI,会触发控件的Unloaded/Loaded 现象/重现案例 对Unloaded/Loaded的印象: FrameworkElement, 第一次加载显示时,会触发Loaded.元素被释 ...

  5. Java基础IO类之字节输入输出流

    一.IO流概述 1.IO流:输入输出流(Input/Output) 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象,即数据在设备间的传输流, 流的本质是数据传输,根据数据传输特性将 ...

  6. Java集合框架 10 连问,你有被问过吗?

    首先要说一下,本文对这些Java集合框架的面试题只做了一个总结式的回答,对每一道题目,都值得深入去了解一下(什么是扎实基本功,这些就是基本功~~),后续可能对每一道题目拆开独立篇章来深入讲解一下. 大 ...

  7. 【开发工具 - MySQL】之不能插入中文的问题

    新安装的MySQL数据库,在安装的时候设置了字体为UTF8,但在使用insert语句插入中文的时候还是会报错. 具体解决方法:在MySQL控制台中输入以下设置代码: SET character_set ...

  8. 有趣的动态规划(golang版本)

    多年前就听过这个动态规划,最近在复习常用算法的时候才认真学习了一下,发现蛮有意思,和大家安利一波. 定义: 准确来说,动态规划师吧一个复杂问题分解成若干个子问题,并且寻找最优子问题的一种思想,而不是一 ...

  9. 关于jsp页面的复选框(checkbox)取值的获取问题

    复选框的取值问题可以使用js和jQuery来获取: jQuery API : each(callback) :以每一个匹配的元素作为上下文来执行一个函数. :checked :匹配所有选中的被选中元素 ...

  10. Java继承、构造、重写

    Music mu=new Music(); Musc m=mu;//地址一样   继承:Java只支持单继承,不支持多继承. Java支持多层(重)继承(继承体系). 如果类之间存在着:is a 的关 ...