Bootstrap

打印进度条

1.Python语言实现

(1)黑白色

在这里插入图片描述


import sys
import time

def progress_bar(percentage, width=50):
    """
    打印进度条
    :param percentage: 当前进度百分比 (0-100)
    :param width: 进度条的宽度,默认是50字符
    """
    completed = int(width * (percentage / 100))              #已完成部分
    remaining = width - completed                            #未完成部分
    bar = f"[{'#' * completed}{'.' * remaining}]"
    sys.stdout.write(f"\rProgress: {percentage:3d}% {bar}")  #动态刷新行
    sys.stdout.flush()                                       #※实现动态更新,不换行输出

# 模拟进度条运行
for i in range(101):    #0%到100%
    progress_bar(i)     #更新进度条
    time.sleep(0.05)    #模拟延迟

print("\nDone!")        #结束后换行

(2)彩色:蓝色

在这里插入图片描述
在这里插入图片描述

import sys
import time

def progress_bar(percentage, width=50):
    """
    打印进度条
    :param percentage: 当前进度百分比 (0-100)
    :param width: 进度条的宽度,默认是50字符
    """
    completed = int(width * (percentage / 100))  # 已完成部分
    remaining = width - completed                # 未完成部分
    # 进度条的蓝色部分
    blue = "\033[34m"
    reset = "\033[0m"
    bar = f"[{blue}{'#' * completed}{reset}{'.' * remaining}]"
    sys.stdout.write(f"\rProgress: {percentage:3d}% {bar}")  # 动态刷新行
    sys.stdout.flush()  # ※实现动态更新,不换行输出

# 模拟进度条运行
for i in range(101):  # 0%到100%
    progress_bar(i)    # 更新进度条
    time.sleep(0.05)   # 模拟延迟

print("\nDone!")       # 结束后换行



2.C++语言实现

(1)黑白颜色

在这里插入图片描述
在这里插入图片描述


#include <iostream>
#include <thread>  //用于 sleep_for
#include <chrono>  //用于时间延迟
using std::cout;
using std::endl;

void progressBar(int percentage, int width = 50) {
    int completed = (percentage * width) / 100; //已完成部分的宽度
    int remaining = width - completed;          //未完成部分的宽度

    cout << "\rProgress: ["; // \r 回到行首,覆盖之前的内容
    for (int i = 0; i < completed; ++i) {
        cout << "#"; // 已完成部分
    }
    for (int i = 0; i < remaining; ++i) {
        cout << "."; // 未完成部分
    }
    cout << "] " << percentage << "%"; // 输出百分比
    cout.flush(); // 刷新输出流
}

int main() {
    for (int i = 0; i <= 100; ++i) { // 模拟进度从0%到100%
        progressBar(i);              // 更新进度条
        std::this_thread::sleep_for(std::chrono::milliseconds(50)); // 模拟延迟
    }
    cout << endl << "Done!" << endl; // 进度完成后换行
    return 0;
}

(2)彩色版:红绿色

在这里插入图片描述

在这里插入图片描述

#include <iostream>
#include <thread>  //用于 sleep_for
#include <chrono>  //用于时间延迟
using std::cout;
using std::endl;

void progressBar(int percentage, int width = 50) {
    int completed = (percentage * width) / 100; //已完成部分的宽度
    int remaining = width - completed;          //未完成部分的宽度

    cout << "\rProgress: ["; // \r 回到行首,覆盖之前的内容

    // 已完成部分,使用绿色
    cout << "\033[32m";
    for (int i = 0; i < completed; ++i) {
        cout << "#"; // 已完成部分
    }

    // 未完成部分,使用红色
    cout << "\033[31m";
    for (int i = 0; i < remaining; ++i) {
        cout << "."; // 未完成部分
    }

    // 重置颜色并输出百分比
    cout << "\033[0m] " << percentage << "%"; // 输出百分比
    cout.flush(); // 刷新输出流
}

int main() {
    for (int i = 0; i <= 100; ++i) { // 模拟进度从0%到100%
        progressBar(i);              // 更新进度条
        std::this_thread::sleep_for(std::chrono::milliseconds(50)); // 模拟延迟
    }
    cout << endl << "Done!" << endl; // 进度完成后换行
    return 0;
}
;