basicpython-6

Pandas入门教程(二十二):股票数据分析实战——yfinance 获取数据、技术指标与收益率分析 把 Pandas 用在真实场景,才能体会它的价值。本文以茅台股票为例,用 yfinance 获取历史行情,完成缺失值处理与列筛选,绘制收盘价曲线,计算 SMA 移动平均线与 RSI 相对强弱指数,并通过日收益率、累计收益率和波动率完成完整的量化分析流程。 阅读详情

自制模块

ImgChangeBase64.py

"""
This modules is used to convert image format to base64 format.
"""


def pic_change_base64():
    import PySimpleGUI as sg
    import base64

    layout = [
        [sg.Text("文件路径", font=15, text_color='black'),
         sg.Input(key='-IN1-',
                  size=(35, 2),
                  font='宋体',
                  border_width=2,
                  enable_events=True),

         sg.FileBrowse("选择文件", size=(8, 1))],

        [sg.Button("确定转换", bind_return_key=True, border_width=5, size=(30, 1)),
         sg.Button("取消转换", bind_return_key=True, border_width=5, size=(30, 1))]
    ]

    window = sg.Window("Change_To_Base64", layout)

    def change(path):
        with open(path, 'rb') as f1:
            pic = f1.read()
            return base64.b64encode(pic)

    while True:
        event, values = window.read()
        print(event, values)
        if not event:
            break

        if event == '取消转换':
            break

        if event == '确定转换':
            if values['-IN1-'] == '':
                return None
            else:
                return change(values['-IN1-'])

    window.close()


if __name__ == '__main__':
    print(pic_change_base64())

ASCIIconversion.py

"""
This module converts characters and numbers according to the ASCII table.
"""


def change_character(choose=1):  # 默认返回字符串格式
    if choose == 1 or choose == 2:
        character = input("请输入字符:")
        lt = []
        for i in character:
            lt.append(ord(i))  # ord函数:将字符转为对应的ASCII码
        if choose == 1:  # 参数为 1 的时候,返回字符串格式
            lt_s = []
            for i in lt:
                lt_s.append(str(i))
            return ' '.join(lt_s)
        else:  # 参数为 2 的时候,返回列表格式
            return lt
    else:
        return '参数错误'


def change_number(choose=1):
    number = input("请输入编号[请用空格符进行间隔]>>>")
    if choose == 1 or choose == 2:
        lt = number.split(' ')
        lt_s = []
        for i in lt:
            lt_s.append(chr(int(i)))  # chr函数:将ASCII码转为对应的字符
        if choose == 1:  # 参数为 1 的时候,返回字符串格式
            return ''.join(lt_s)
        else:  # 参数为 2 的时候,返回列表格式
            return lt_s
    else:
        return '参数错误'


if __name__ == '__main__':
    print(change_character())
    print(change_number())

JudgeInput.py

"""
This module is used to determine the number of letters and numbers in a string.
"""
function_dict = {
    '1': "判断(字符串)是否为:纯字母 [返回值:True or False]",
    '2': "判断(字符串)是否为:纯数字 [返回值:True or False]",
    '3': "统计(字符串)中不同字符总个数 [返回值:int]",
    '4': "统计(字符串)中‘大写字母’、‘小写字母’、‘数字’、‘其他字符’的个数 [返回值:dict]"
}


def judge(strings='', funcnum=3, scan=False, ):  # 参数类型:str类型  内容:字符串
    if scan:
        for i in function_dict:
            print("{}:{}".format(i, function_dict[i]))

    if funcnum == 1:  # 判断是否为纯字母
        return strings.isalpha()

    elif funcnum == 2:  # 判断是否为纯数字
        return strings.isdigit()

    elif funcnum == 3:  # 统计字符种类
        set_1 = set()
        for i in strings:
            set_1.add(i)
        return len(set_1)

    elif funcnum == 4:
        capital_letter = 0  # 大写字母个数
        lower_letter = 0  # 小写字母个数
        number = 0  # ‘数字’个数
        others = 0  # 非数字和字母的字符
        for i in strings:
            if 65 <= ord(i) <= 90:  # 统计大写字母个数
                capital_letter += 1
            elif 97 <= ord(i) <= 122:  # 统计小写字母个数
                lower_letter += 1
            elif 48 <= ord(i) <= 57:
                number += 1
            else:
                others += 1

        letter_total = capital_letter + lower_letter  # 统计大小写字母总数
        result_dict = {
            '字符串长度': len(strings),
            '数字字符': number,
            '字母字符': letter_total,
            '大写字母字符': capital_letter,
            '小写字母字符': lower_letter,
            '其他字符': others
        }
        return result_dict

    else:  # 输入不合法,结束函数!
        return None


if __name__ == '__main__':
    print(judge(scan=True))

案例1: 刮刮乐

import random
from JudgeInput import judge  # 导入自制模块


def scratch_off_game(probiblity=1 / 3):  # 自定义概率
    if 0 < probiblity <= 1:
        return main(probiblity)
    else:
        return '参数错误_正确范围[0~1]'


def main(probiblity):
    n = int(6 / probiblity - 6)
    list_prize = ['一等奖', '二等奖', '二等奖', '三等奖', '三等奖', '三等奖']
    list_mix = list_prize + ['谢谢惠顾'] * n  # 融合列表
    random.shuffle(list_mix)  # 将列表打乱
    while True:
        res = input("请输入你想要刮开的号码\n--->").strip()
        if judge(res, 2):  # 字符串中,是纯数字则会返回True,执行if下的语句
            if judge(res) == 1:  # 如果字符种类为’1‘,则查看是否为全部是’0‘
                if res.startswith('0', 0, 1):
                    print('对不起,没有0或全为0的号码!')
                    continue
                else:
                    res = int(res)
                    break
            else:
                lt = list(res)  # 将字符串转成列表
                while True:
                    if lt[0] == '0':  # 对列表第一个值进行判断
                        lt = lt[1::]  # 若它是’0‘,进行切片!
                        continue  # 对切片后的列表,继续做上面的判断
                    else:  # 当列表的第一个值不是’0‘时候,将它转为字符串的形式,并且将这些-数字字符串-转为整型
                        res = ''.join(lt)
                        res = int(res)
                        break
                break
        else:
            print('请输入数字!', end='')
    if 0 < res <= (n + 6):
        return list_mix[res - 1]
    else:
        res = res % (n + 6)
        return (list_mix[res - 1])


if __name__ == '__main__':
    print(scratch_off_game(1 / 2))

案例2: 平润年

import time


def year():
    year = int(input("请输入年份:").strip())
    while True:
        if year > 0:
            if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0):
                return [year, "平年"]
            else:
                return [year, "闰年"]
        else:
            print('请正确输入!')


def month(year):
    while True:
        month = int(input("请输入月份:").strip())
        if month in [1, 3, 5, 7, 8, 10, 12]:
            return f"{year}年{month}月,有31天"
        elif month in [4, 6, 9, 11]:
            return f"{year}年{month}月,有30天"
        elif month == 2:
            if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0):
                return f"{year}年{month}月,有28天"
            else:
                return f"{year}年{month}月,有29天"
        else:
            print('请正确输入!')


def main():
    while True:
        print('\n1.只查询年份\n2.查询到月份\n3.退出')
        num = input('\n请输入功能号\n--->').strip()

        if num == '1':
            lt = year()
            print("{}年是{}".format(lt[0], lt[1]))
            time.sleep(3)
        elif num == '2':
            lt = year()
            print(month(lt[0]))
            time.sleep(3)
        elif num == '3':
            break
        else:
            print('请正确输入!')


if __name__ == '__main__':
    main()

案例3: 手机通讯录

import os

# 通讯录功能---展示部分:
program = {"1": "添加联系人", "2": "查看通讯录", "3": "修改联系人", "4": "删除联系人", "5": "清空通讯录", "6": "退出"}

# 手机通讯录date目录:
address = os.path.abspath('')  # 当前py文件的上一级目录
old_address = fr"{address}\手机通讯录date.txt"
new_address = fr"{address}\手机通讯录date(copy).txt"


# 辅助函数
def quit():
    if input("任意键退出查询") != '':
        return None


def write_infomation():
    per_name = input_not_empty("联系人的姓名:")
    if is_exist(per_name):
        print("此人已在通讯录中!")
        return None
    phone_num = input_not_empty("联系人的手机号:")
    per_email = input_not_empty("联系人的邮箱:")
    per_address = input_not_empty("联系人的地址:")
    # 信息整合
    per_infomation = f"姓名-{per_name}---手机号-{phone_num}---邮箱-{per_email}---地址-{per_address}\n"
    return per_infomation


def input_not_empty(str):
    """ 此函数的功能是判断输入的内容是否为空 """
    while True:
        content = input(str).strip()
        if content == '':
            print("内容不能为空,请重新输入!")
            continue
        return content


def is_exist(name, switch=1):
    """
    此函数的功能是判断某人的信息是否已经存在于手机通讯录的数据中
    参数 switch = 1 ---> 只查询模式
    参数 switch = 2 ---> 返回对象模式
    """
    if switch == 1:
        with open(old_address, mode='rt', encoding='utf-8') as f1:
            for line in f1:
                list1 = line.strip().split("---")  # [姓名-per_name, 手机号-phone_num, 邮箱-per_email, 地址-per_address]
                list2 = list1[0].split('-')  # [姓名, per_name]
                if list2[1] == name:
                    return True
            return False

    if switch == 2:
        with open(old_address, mode='rt', encoding='utf-8') as f1:
            for line in f1:
                list1 = line.strip().split("---")  # [姓名-per_name, 手机号-phone_num, 邮箱-per_email, 地址-per_address]
                list2 = list1[0].split('-')  # [姓名, per_name]
                if list2[1] == name:
                    return list1
            return False


def date_is_empty():
    with open(old_address, mode='rt', encoding='utf-8') as f1:
        if f1.readline() == '':
            return True
        return False


def change_or_delete(switch):
    """
    此函数的功能是修改或删除某人的信息
    参数 switch = 1 ---> 修改模式
    参数 switch = 2 ---> 删除模式
    """

    # 文件信息转移:
    def main(switch):
        n = 0  # 名字异常(不用修改文件,直接退出到系统首页)-- 计数
        with open(old_address, mode='rt', encoding='utf-8') as f1:
            with open(new_address, mode='wt', encoding='utf-8') as f2:
                # 主体部分:
                if switch == 1:
                    name = input("请输入要修改信息的联系人的姓名:").strip()
                    if is_exist(name):
                        # change核心开始

                        # 先存好其他联系人的信息:
                        for line in f1:
                            # 辅助查找名字部分
                            list1 = line.strip().split(
                                "---")  # [姓名-per_name, 手机号-phone_num, 邮箱-per_email, 地址-per_address]
                            list2 = list1[0].split('-')  # [姓名, per_name]

                            # 查找名字:
                            if list2[1] == name:
                                old_per_info = line  # 对要修改的信息,先备一份,以防要使用旧的数据
                                continue
                            # 主线部分
                            f2.write(line)

                        # 循环保存好了之后,再追加修改后的信息:
                        print('请进行修改...')
                        res = write_infomation()
                        if res:
                            f2.write(res)
                            print('修改成功!')
                            return quit()

                        print('修改失败!')
                        f2.write(old_per_info)  # 修改失败后将旧的信息写入
                        return quit()

                        # change核心结束

                    print('修改失败!通讯录查无此人')
                    n = 1  # 计数为1,不用修改文件
                    quit()
                    return n

                if switch == 2:
                    name = input("请输入要删除的联系人的姓名:").strip()
                    if is_exist(name):
                        # delete核心开始

                        # 先存好其他联系人的信息:
                        for line in f1:
                            # 辅助查找名字部分
                            list1 = line.strip().split(
                                "---")  # [姓名-per_name, 手机号-phone_num, 邮箱-per_email, 地址-per_address]
                            list2 = list1[0].split('-')  # [姓名, per_name]

                            # 查找名字:
                            if list2[1] == name:
                                continue

                            # 主线部分
                            f2.write(line)

                        # 循环保存结束
                        print("删除成功!")
                        return quit()

                        # delete核心结束

                    print('删除失败!通讯录查无此人')
                    n = 1  # 计数为1,不用修改文件
                    quit()
                    return n

    # 文件伪装部分:
    def camouflage():
        os.remove(old_address)
        os.rename(new_address, old_address)

    # 执行部分:
    if main(switch) != 1:  # 返回值为n,若n的计数为1,不用修改文件(也就不用进行伪装部分),否则,进行修改文件,而且下一步要进行文件伪装的操作
        camouflage()


# 通讯录功能函数

def func1():
    # 信息写入
    with open(old_address, mode='at', encoding='utf-8') as f1:
        res = write_infomation()
        if res:
            f1.write(res)
            print("保存成功!")


def func2():
    per_info_list = []
    all_info_list = []
    while True:
        funcnum = input('1.查看通讯录中所有信息\n2.查看某人的信息\n--->').strip()
        if funcnum == '1':
            if date_is_empty():
                print("通讯录暂无信息")
                return None
            with open(old_address, mode='rt', encoding='utf-8') as f1:
                for line in f1:
                    list1 = line.strip().split("---")  # [姓名-per_name, 手机号-phone_num, 邮箱-per_email, 地址-per_address]
                    for i in range(4):
                        per_info_list.append(
                            list1[i].split('-')[1])  # 将列表中的第二个元素添加到--->个人列表中, 如:[姓名, per_name] 中的per_name
                    all_info_list.append(list1)
                print(all_info_list)  # 显示所有信息
                return quit()

        if funcnum == '2':
            if date_is_empty():
                print("通讯录暂无信息")
                return None

            name = input("被查询者的姓名:").strip()
            if is_exist(name):
                print(is_exist(name, 2))
                return quit()
            print("查询失败!通讯录中查无此人")
            return quit()

        print("输入有误,请重试!")


def func3():
    change_or_delete(1)


def func4():
    change_or_delete(2)


# 手机通讯录’核心‘执行函数
def address_book():
    print("欢迎使用手机通讯录")

    while True:
        print("\n<<功能列表>>")
        for i in program:
            print(f"{i}:{program[i]}")
        funcnum = input("请输入功能号>>").strip()

        if funcnum == '1':
            func1()
            continue
        if funcnum == '2':
            func2()
            continue
        if funcnum == '3':
            func3()
            continue
        if funcnum == '4':
            func4()
            continue

        if funcnum == '5':
            while True:
                num = input("是否真的清空通讯录?数据不可恢复,请慎重考虑!\n1.Yes  2.No\n").strip()
                if num == '1':
                    with open(old_address, 'at', encoding='utf-8') as f1:
                        f1.seek(0)
                        f1.truncate()  # 清空--此刻光标所在位置之后的内容
                    print('已清空通讯录!')
                    break

                if num == '2':
                    print('已取消——清空命令')
                    break

                print("输入有误,请重试!")

            continue

        if funcnum == '6':
            break

        print("输入错误,请重新尝试!")


if __name__ == '__main__':
    address_book()

案例4: 星期类单词识别

# 方法一
day_dict_1 = {'m': 'Monday', 'w': 'Wednesday', 'f': 'Friday'}
day_dict_2 = {'tu': 'Tuesday', 'th': 'Thursday', 'sa': 'saturday', 'su': 'Sunday'}


def func1():
    while True:
        # 先解决一个字母的
        one = input("请输入第一个字母:").strip()
        one = one.lower()  # 将字母化为小写的形式
        for i in day_dict_1:
            if one == i:
                print(day_dict_1[i])
                return None
        else:
            if one.lower() in 'ts':
                two = input("请输入第二个字母:")
                two = two.lower()  # 将字母化为小写的形式
                for i in day_dict_2:
                    if one + two == i:
                        print(day_dict_2[i])
                        return None
                else:
                    print("第二次输入有误")
                    continue
        print('第一次输入有误')
        if input('"1"键退出,否则继续') == '1':
            return None


# 方法二
list = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'saturday', 'Sunday']
list_head1 = ['m', 'tu', 'w', 'th', 'f', 'sa', 'su']


def func2():
    while True:
        first = input('请输入第一个字母:').strip()
        for i in list_head1:
            if first.lower() in i:
                if first.lower() == i:
                    print(list[list_head1.index(i)])
                    return None
                second = input('请输入第二个字母:').strip()
                if second.lower() in 'uhau':
                    print(list[list_head1.index(first.lower() + second.lower())])
                    return None
                else:
                    print('输入有误!')
                    break

        if input('输入有误!\n"1"键退出,否则继续\n--->').strip() == '1':
            break


# 48-57  65-90  97-122

if __name__ == '__main__':
    func1()
    func2()

案例5: 电子钱包

# 电子钱包功能
def login():
    print('执行登录功能')


def scan():
    print('执行扫描功能')


def transfer():
    print('执行转账功能')


def query():
    print('执行余额查询功能')


func_dic = \
    {
        '0': (None, '退出'),
        'po': (login, '登录'),
        '2': (scan, '扫描'),
        '3': (transfer, '转账'),
        '4': (query, '余额查询')
    }

while True:
    # 显示功能界面
    for line in func_dic:
        print(line, func_dic[line][1])
    # 获取功能号
    num = input('请输入功能号>>>')
    # 判断并执行功能
    if num == '0':
        break
    if num not in func_dic:
        print('此功能不存在,小傻瓜!')
        continue
    func_dic[num][0]()

案例6: 随机分配办公室

import random

name = 'ABCDEF'  # 分组
elist = [[], [], []]
for i in name:
    elist[random.randint(0, 2)].append(i)

for i in elist:  # 打印
    print(f"第{elist.index(i) + 1}组:{i}")

案例7: 递归之二分法寻找目标

# 算法:二分法
def find(the_list):
    if len(the_list) == 1:
        if the_list[0] == num:
            print('恭喜,找到了!')
        else:
            print('很遗憾,找不到!')
        return
    else:
        the_num = int(len(the_list) / 2)
        if the_list[the_num] > num:
            ll = the_list[:the_num:]
            find(ll)

        elif the_list[the_num] < num:
            ll = the_list[the_num::]
            find(ll)

        else:
            print('恭喜,找到了!')
            return


lt = [1, 8, 9, 5, 6, 5, 9, 8, 1, 55, 0, -1, 95, 20, -9]
lt.sort()  # 对混乱的列表进行整理:即重新排序!

# 调用试试看
while True:
    num = int(input('请输入您想要从列表里找的数:').strip())  # 接收用户需要寻找的数
    find(lt)
AURIX™ TC49x芯片手册中文分享(二) 主要内容为第一章、功能模块的特征 阅读详情

相关推荐

用pyqtgraph 和pyqt5绘制股票K线图

# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'QWidget_plot.ui' # # Created by: PyQt4 UI code generator 4.11.4 # # WARNING! All changes made in this file will be lost!...

qq_23114283的博客 5429

basicPython-1

元组、列表、字典、集合、字符串、格式化输出、循环语句、生成式、异常处理

因为热爱,所以坚持。 833

Oracle 19c RAC安装踩坑实录:OpenSSH 8.x版本与OUI的“兼容性战争”及一劳永逸的解决思路

本文深入解析Oracle 19c RAC在Linux8环境中部署时遇到的OpenSSH 8.x版本兼容性问题,特别是[INS-06006]错误的根源与解决方案。从协议层分析冲突本质,提供SCP包装器技术、官方补丁应用指南及现代化部署体系构建三种解决方案,帮助企业高效完成RAC安装并规避类似问题。

weixin_42648844的博客 457

basicPython-2

普通函数、生成器、迭代器、递归函数、匿名函数、装饰器、记忆函数

因为热爱,所以坚持。 515

说一说系统/子系统规格说明

《系统/子系统规格说明》都是从用户的角度以软件的维度来描述系统的功能、性能、业务流程、数据流和控制流等,并描述内外部接口需求、资源使用情况等.

weixin_40725543的博客 5428

Livox-avia+FAST-LIO麻瓜使用教程

激光雷达 SLAM Fastlio 安装

aaaaaaaaaww12的博客 3675

basicPython-5

常用的模块 (module)

因为热爱,所以坚持。 701

华为OD机试 - 城市聚集度(Python/JS/C/C++ 2025 A卷 200分)

华为OD机试 2025A卷题库疯狂收录中,刷题。

学Java,找哪吒 1129

basicPython-3

类和对象、继承、多态、反射、元类、单例模式

因为热爱,所以坚持。 801

QGIS之二十六pbf转osm转shp

QGIS之二十六pbf转osm转shp

yilvyangguang520的博客 7498

basicPython-4

文件操作、案例演示

因为热爱,所以坚持。 442

使用 MATLAB/Simulink + Simscape Electrical + Simulink Design Optimization,构建一个基于SiC/GaN的Z源逆变器在储能系统中的软启

《手把手教你学Simulink:Z源逆变器在储能系统中的应用》摘要 本文详细介绍了使用MATLAB/Simulink构建Z源逆变器储能系统仿真模型的全过程。Z源逆变器凭借其独特的阻抗网络结构,解决了传统逆变器在直通保护和升压能力方面的痛点。文章通过6个关键步骤:主电路搭建、调制策略设计、软启动实现、仿真分析、效率对比和工程问题解决方案,完整展示了Z源逆变器从理论到仿真的实现路径。重点讲解了直通零矢量SPWM调制策略和渐进式升压比控制方法,验证了系统93.3%的效率和优异的抗扰性能。该模型为光伏储能、电动汽车

MHD0815的博客 122

basicPython-7

软件开发目录规范

因为热爱,所以坚持。 440

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Python Basic - Python格式化输出

目录功能解释代码示例常见格式化占位符 功能解释 一句话概括:数据更美观,更易懂 有时候需要将特定的数据,按照人更友好的格式进行输出,便于查看或存储,例如,需要指定输出某个人的信息,如,姓名,年龄,公司,部门,职位,工资等信息,按照特定的格式输出后更易读取。 代码示例 [root@Private python-script]# cat formatout.py #!/usr/local/bin/py...

HuangFei 188

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

AI全栈实战 | 3.9-01 爬虫入门:requests 加 BeautifulSoup 三分钟跑通,但 90% 的人栽在这 4 个“礼貌“问题上

⚠️:本文内容仅用于。请遵守目标站点的服务条款与相关法律法规,不得对目标服务造成负担,不得采集、传播个人隐私数据。技术是中性的,边界在你手里。爬虫的入门技术(requests 发请求 + BeautifulSoup 解析)三分钟就能学会。真正区分"会用爬虫"和"会做爬虫的人"的,是这篇我们跑通"请求→解析→存储"的最小闭环,然后重点把"合规与礼貌"这根弦给你绷上。

源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 399

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

从一段视频到可漫游的 4D 有声场景:思路拆解与最小复现手记

只需一段手机视频,你就能生成可"走进去"的 4D 有声场景:转头时狗叫声方向随之变化,走近时声音更清晰。本文拆解 Video-to-4DAVScene 的核心思路,手把手带你用几十行 Python 搭出最小管线,把视频中的运动物体变成带空间位置的声源,并附上三个真实踩坑的排障经验,代码可直接跑。🎧

helloagent的博客 232

Python+Agent入门笔记(二):列表推导式、模块和异常,这些写 Agent 前得会

接上一篇《Python+Agent入门笔记(一)》。基础语法跑通之后,这篇聊几块日常写脚本绕不开的东西。还是按 JS/Go 开发者的视角写,尽量记录我实际卡过的地方。

qq_41241612的博客 430

【每天一个 Python 小案例30】Python 基础知识综合小项目:我的工具盒

作为系列收官,本篇把前 29 篇的知识点合成一个能直接用的命令行工具"我的工具盒":计算器(用 ast 解析表达式,不碰 eval)、单位换算与温度转换(一张换算表 + 特例分支)、记账与分类统计(Decimal + JSON 持久化)、以及用"字典当命令表"把菜单和业务逻辑解耦的主循环。文中对比了 eval 的安全隐患与 ast 白名单的做法,解释了 lambda 闭包在字典里的写法与晚绑定陷阱,并在最后给出整个系列的知识地图,把变量、数据结构、控制流、函数、类、异常、文件、标准库八块内容对应到具体篇目。

xinjiyaya的博客 419

详解Python条件语句

在 Python 中,if...else 是一种条件语句,可以根据给定的条件执行不同的操作。这个语句通常用于控制程序的流程。

2601_96798737的博客 205

Python3 协程:异步编程的核心机制与实战

协程是解决I/O密集型任务等待瓶颈的高效机制,相比线程更轻量、无锁开销。从yield到async/await的演进,使异步编程语义清晰、易于理解。通过async/await可实现并发执行多个任务(如gather、create_task),显著提升网络请求、爬虫等场景性能。关键在于使用异步库(如aiohttp)替代同步库,避免阻塞事件循环。合理控制超时与并发数,才能发挥协程最大优势。

Lxn2zh的博客 159

python如何控制浏览器

Python 可以通过 Selenium、Playwright 等工具实现浏览器自动化,从打开网页到执行复杂交互操作均可脚本化完成。Selenium生态成熟

2601_96797912的博客 76

torch.compile 差异仅 1e-6,边界样本预测为何翻转

torch.compile 加速后输出与 eager 不一致,部分预测翻转。逐层对比与 graph break 分析定位到动态分支翻转根因。容差回归仅适用于无分支翻转场景,零容忍场景应禁用编译。

昨日种种,皆成今我。今日种种,皆成新我。 158

二进制木马免杀-Python 分离免杀与 Web 挂马

二进制木马免杀-Python 分离免杀与 Web 挂马

2503_94637398的博客 267

Python 100讲课程导航:第08篇《Python input 与类型转换:构建可靠的交互程序》

本文详解Python中input()的返回类型为字符串,强调必须通过int()、float()等函数进行类型转换。重点讲解了输入验证的重要性,结合try-except处理ValueError等异常,实现可靠的交互程序。通过购物预算计算器实战,演示如何防范非法输入、处理边界值,并推荐使用Decimal避免浮点精度问题,提升程序健壮性。

铭渊老黄 134

【Python】国家中小学智慧教育平台电子教材批量下载与 PDF 合成实战

成果:两本语文电子课本(一年级上册 118 页 / 23MB、三年级上册 130 页 / 30.3MB),合计 248 页、约 54MB,单本下载加合成 40~60 秒,PDF 页数校验全部通过。经验教训SPA 站点的数据接口优先从 bundle 里挖,比抓页面稳得多;资源链接要按 private/public 分组看待,只取平台公开部分;页数、目录名这类“可推断”的信息,永远用实际响应验证一次;受限环境里“能不能跑浏览器”要在方案定稿前确认。后续计划:这版 PDF 是图片版,没有文字层;

木头大左的博客 125
上一篇: basicPython-5
下一篇: basicPython-7
code_stream
博客等级 码龄4年 1238粉丝 169原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值