IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 【深度之眼三——(2)】 Python:函数-面向过程的编程 -> 正文阅读

[Python知识库]【深度之眼三——(2)】 Python:函数-面向过程的编程

目录

一,函数的优势

二,函数的定义

?2.1 函数的参数

?2.1.1位置参数

?2.1.2 关键字参数

?2.1.3 默认参数

2.1.4? 可变长参数? *args

?2.1.5? 可变长参数? **kwargs

2.2 函数体

2.2.1 全局与局部变量

?2.2.2 返回值

?2.2.3几点建议

?2.3 函数编程实例

2.4 匿名函数

?2.4.1 基本形式

?2.4.2常用用法?

?三,面向对象和面对过程

?四,知识总结


本章导读

一,函数的优势

1,提高复用性

2.将大问题分解成一系列的小问题

3.利于维护

顺序式

?提高效率,抽象成函数

二,函数的定义

三要素:参数,函数体,返回值

def 函数名(参数):

??????? 函数体

??????? return 返回值

?2.1 函数的参数

?2.1.1位置参数

??????? ·一般用在参数较少的情况

?

?第一个和第三个都会发生错误

?2.1.2 关键字参数

?

function(1,y=2,z=1)

?`不能为同一个形参重复传值;

系统会报错

?2.1.3 默认参数

?

?

?有默认参数的形参放在后面

?默认参数应该设置成一个不可变类型(数字,字符串,元组)

造成这个看似有记忆功能的原因是,当使用可变参数时,默认参数的地址从来没有变过,在执行第一次函数的时候,默认参数发生改变,地址不会发生改变,每次操作都是在这个地址上的列表操作

?

使用不可变参数的时候,不会产生这样的“记忆功能”

实现可变参数

?

2.1.4? 可变长参数? *args

·实参打散

?

?用*号实现列表的,字符串等的打散

?2.1.5? 可变长参数? **kwargs

·可变长参数的组合使用

2.2 函数体

2.2.1 全局与局部变量

局部变量:仅在函数体内定义和发生作用;

全局变量:外部定义的都是全局变量:

???? ·全局变量可以在函数体内直接使用

可以通过global 在函数体内定义全局变量

z的可以顺利输出

?2.2.2 返回值

?单个返回值

多个返回值——以元组形式

元组的解包赋值

?可以有多个返回值(多个return语句),但只能执行一个

?没有return语句,返回值是None

?

?2.2.3几点建议

1、函数及其参数的命名参照变量的命名

??????? ·字母小写及下划线组合

????????·有实际意义

2、应包含简要阐述函数功能的注释,注释紧跟函数定义后面

3、函数定义前后各空两行

?2.3 函数编程实例

2.4 匿名函数

?2.4.1 基本形式

lambda 变量:函数体

?2.4.2常用用法?

在参数列表中最适合使用匿名函数,尤其是与key=搭配
????????·排序sort()sorted()

?.sort()是永久性的排序,会改变原始数据,sorted()是暂时性的排序

?第一个程序是目的是根据元组第0个元素升序排序

?第二个程序是目的是根据元组第1个元素升序排序

?第三个程序是目的是根据元组元素和升序排序

?如果要降序排序的话,在后面加reverse=ture

?????????·max() min()

?三,面向对象和面对过程

面向过程——以过程为中心的编程思想,以"什么正在发生"为主要目标进行编程。冰冷的,程序化的
面向对象——将现实世界的事物抽象成对象,更关注"谁在受影响”,更加贴近现实。有血有肉,拟人(物)化的

答案在末尾

?四,知识总结

答案

import random

def get_input():
    #获取数据
    pro_A = eval(input("输入球员A得分概率:"))
    num_of_game = eval(input("比赛场次:"))
    pro_B = round(1 - pro_A, 2)
    print("比赛次数:",num_of_game)
    print("A的概率为:",pro_A)
    print("B的概率为:",pro_B)
    return pro_A,pro_B,num_of_game

def sim_n_game(pro_A,pro_B,num_of_game):  #比赛的A,B在n场中赢得的场数
    win_A,win_B =  0,0
    for i in range(num_of_game):
        score_A,score_B =  sim_one_game(pro_A,pro_B)
        if score_A > score_B :
            win_A += 1
        else:
            win_B += 1
    return win_A,win_B

def sim_one_game(pro_A,pro_B):  #比赛一场的分数返回
    score_A,score_B = 0,0
    while not gameover(score_A,score_B):
        if random.random() < pro_A:
            score_A +=1 
        else:
            score_B +=1
    return score_A, score_B

def gameover(score_A,score_B):  #当A或B有一个达到21分,返回1;
    return score_A == 21 or score_B == 21

def  print_sum(win_A,win_B,num_of_game):
    print("A赢得场次为{0},概率为{1:.1%}".format(win_A,win_A/num_of_game))
    print("B赢得场次为{0},概率为{1:.1%}".format(win_B,win_B/num_of_game))
    
def main():
    pro_A,pro_B,num_of_game = get_input()  #获取数据
    win_A,win_B = sim_n_game(pro_A,pro_B,num_of_game) #返回结果
    print_sum(win_A,win_B,num_of_game) #结果输出
    
main()

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-07-17 16:19:02  更:2022-07-17 16:20:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 1:22:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计