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知识库 -> Python函数 -> 正文阅读

[Python知识库]Python函数

函数

函数的定义与使用

函数的定义

在传统的观念中,函数包括自变量和因变量,如:y = f(x)或z = f(x,y) ;而在Python中,自变量被称为参数,因变量被称为返回值。

函数—> y = f(x)/ z = f(x,y) / … —>相对独立且会被重复使用的功能(代码),将来想使用这些功能的时候,不需要再复制粘贴代码,而是直接通过调用函数来做到。

函数的构造

请添加图片描述
请添加图片描述

函数的使用
  • 全局变量和局部变量

全局变量:没有写在任何函数里面的变量
局部变量:定义在函数内部的变量

Python程序中搜索一个变量是按照LEGB顺序进行搜索

Local(局部作用域) —> Embeded(嵌套作用域) —> Global(全局作用域)—> Built-in(内置作用域)

global:生命使用全局变量或者定一个局部变量将其放到全局作用域
nonlocal:声明使用嵌套作用域的变量x(不使用局部变量)

"""
example01 - 全局变量和局部变量

Author: Asus
Date: 2021/8/2
"""

x = 100


def foo():
    # 如果我不想在函数foo中定义局部变量x,想直接使用全局变量x
    global x
    x = 200

    def bar():
        # 如果我不想在函数bar中定义局部变量x,想直接使用嵌套作用域的变量x
        # nonlocal x
        x = 300
        print(x)	# 300

    bar()
    print(x)	#200


foo()
print(x)  # 如果没有定义x=100,那么将会报错:name 'x' is not defined
实例

1.求阶乘

"""
example02 - 求阶乘

Author: Asus
Date: 2021/8/2
"""

def fac(num):
    """
    求阶乘

    :param num: 所求阶乘的数
    :return: 阶乘的结果
    """
    result = 1
    for i in range(2, num + 1):
        result *= i
    return result

m = int(input('m = '))
n = int(input('n = '))

print(fac(m) // fac(n) // fac(m - n))

2.CRAPS赌博游戏 —> 色子游戏

  • 规则:

    玩家摇两颗色子,如果第一次摇出了7点或11点,玩家胜;如果摇出了2点、3点、12点,庄家胜;
    如果摇出了其他的点数,游戏继续,玩家重新摇色子;如果玩家摇出了第一次摇的点数,玩家胜;
    如果玩家摇出了7点,庄家胜;如果玩家摇出其他点数,游戏继续,玩家重新摇色子,直到分出胜负。

    游戏开始之前,玩家有1000元的初始资金,玩家可以下注,赢了获得下注的金额,输了就扣除下注的金额。
    游戏结束的条件是玩家把钱输光。

"""
homework01 - CRAPS赌博游戏 ---> 色子游戏

Author: Asus
Date: 2021/8/2
"""
import random


def roll_dice(num=2):
    """
    摇色子

    :param num: 色子的数量(对子变量进行说明)
    :return: 摇出的点数(对因变量进行说明)
    """
    point = 0
    for _ in range(num):
        point += random.randrange(1, 7)
    return point


def win():
    """玩家胜"""
    global counter
    print('玩家胜')
    counter += count


def lose():
    """玩家输"""
    global counter
    print('庄家胜')
    counter -= count


counter = 1000
while counter > 0:
    print(f'玩家总资产{counter}元.')
    count = 0
    while count <= 0 or count > counter:
        try:
            count = int(input('玩家下注的金额:'))
        except:
            pass
    # first_point = random.randrange(1, 7) + random.randrange(1, 7)
    # 因为函数的参数有默认值,调用函数时如果没有给自变量,就会使用默认值
    first_point = roll_dice()
    print(f'玩家摇出了{first_point}点.')
    if first_point in (7, 11):
        win()
        # print(counter)
    elif first_point in (2, 3, 12):
        lose()
        # print(counter)
    else:
        while True:
            # curr_point = random.randrange(1, 7) + random.randrange(1, 7)
            curr_point = roll_dice()
            if curr_point == first_point:
                win()
                break
            elif curr_point == 7:
                lose()
                break
if counter == 0:
    print('玩家破产,游戏结束')

3.双色球、大乐透随机选号

  • 双色球玩法:红色球01-33,选择不重复的6个球,按从小到大排列
    蓝色球01-16,选择一个球,跟在红色球的后面
  • 大乐透玩法:红色球01-35,选择不重复的5个球,按从小到大排列
    蓝色球01-12,选择不重复的2个球,跟在红色球的后面
"""
homework02 - 双色球、大乐透随机选号(实现机选N注)

Author: Asus
Date: 2021/8/2
"""
import random


def generate(red_ball_max=33, red_ball_num=6,
             blue_ball_max=16, blue_ball_num=1):
    """
    生成一组彩票号码

    :param red_ball_max: 红色球的最大值
    :param red_ball_num: 红色球的数量
    :param blue_ball_max: 蓝色球的最大值
    :param blue_ball_num: 蓝色球的数量
    :return: 保存一组彩票号码的列表
    """
    red_balls = [i for i in range(1, red_ball_max + 1)]
    bule_balls = [i for i in range(1, blue_ball_max + 1)]
    selected_red_balls = random.sample(red_balls, red_ball_num)
    selected_red_balls.sort()
    # selected_balls.append(random.choice(bule_balls))
    selected_blue_balls = random.sample(bule_balls, blue_ball_num)
    selected_blue_balls.sort()
    return selected_red_balls + selected_blue_balls


def display(balls):
    """
    显示一组彩票号码

    :param balls: 装彩票号码对应的球的列表
    :return:
    """
    for ball in balls:
        print(f'{ball:0>2d}', end=' ')
    print()


n = int(input('机选几注:'))
print('双色球玩法:')
for _ in range(n):
    display(generate())

print('大乐透玩法:')
for _ in range(n):
    display(generate(35, 5, 12, 2))

优化代码:

"""
homework02 - 双色球、大乐透随机选号(实现机选N注)

Author: Asus
Date: 2021/8/2
"""
import random


def generate(ball_max, ball_num):
    """选择一组随机的球

    :param ball_max: 球的最大值
    :param ball_num: 球的数量
    :return: 保存一组球的列表
    """
    balls = [i for i in range(1, ball_max + 1)]
    selected_balls = random.sample(balls, ball_num)
    selected_balls.sort()
    return selected_balls


def make_big_lottery():
    """生成大乐透的号码"""
    return generate(35, 5) + generate(12, 2)


def make_two_colors():
    """生成双色球的号码"""
    return generate(33, 6) + generate(16, 1)


def display(balls):
    """
    显示一组彩票号码

    :param balls: 装彩票号码对应的球的列表
    """
    for ball in balls:
        print(f'{ball:0>2d}', end=' ')
    print()


n = int(input('机选几注: '))

print('双色球: ')
for _ in range(n):
    display(make_two_colors())

print('大乐透: ')
for _ in range(n):
    display(make_big_lottery())
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-04 11:09:46  更:2021-08-04 11:12:14 
 
开发: 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年5日历 -2024/5/17 12:32:16-

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