整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          讓你的輸出變得更帥,Python炫酷的顏色輸出與進(jìn)度條打印

          語(yǔ)單詞優(yōu)化

          上篇文章寫到了Python開發(fā)英語(yǔ)單詞記憶工具,其中依賴了bootstrap.css jQuery.js 基礎(chǔ)html模塊以及片段的css樣式。有些朋友問,怎么能將這個(gè)練習(xí)題打包成單獨(dú)的exe可執(zhí)行文件,來脫離python環(huán)境使用呢?

          私信小編01即可獲取大量的Python學(xué)習(xí)資料

          在這里跟大家簡(jiǎn)單說下思路,有需求的朋友可以自己去扒拉扒拉…

          依賴的css和js,如果有外網(wǎng)的前提,可以使用bootcdn提供的鏈接引用:

          https://cdn.bootcss.com/jquery/3.4.0/jquery.min.js

          https://cdn.bootcss.com/twitter-bootstrap/3.4.1/css/bootstrap.min.css

          自己編輯的css樣式,可以添加在head中的style中

          基礎(chǔ)html可以作為一大段的string在python中進(jìn)行定義,最終替換關(guān)鍵內(nèi)容后輸出。至于cet4的單詞表,建議就不要添加在代碼中了,和打出來的exe文件放置在一起即可。

          好了,思路就是這些,喜歡的朋友可以去嘗試做一下,這樣就可以無時(shí)無刻給自己出一份英語(yǔ)練習(xí)測(cè)試題了。

          Python風(fēng)騷的打印!

          大家平時(shí)在Linux/Windows下安裝軟件時(shí),經(jīng)常會(huì)出現(xiàn)進(jìn)度條和百分比的提示,Python是否能實(shí)現(xiàn)這樣的打印?安裝過程中,經(jīng)常會(huì)看到很多帶顏色的安裝說明,我們?cè)趐ython輸出時(shí),確是千篇一律的黑底白色,是否想過打印的炫酷一些呢?

          以上操作其實(shí)很簡(jiǎn)單,今天就來教教大家,通過幾分鐘的學(xué)習(xí)讓之后代碼的輸出變得與眾不同!

          Python打印進(jìn)度條

          python打印進(jìn)度條的原理其實(shí)很簡(jiǎn)單,先讓我們看一個(gè)例子吧:

          # -*- coding: utf-8 -*-
          # @Author   : 王翔
          # @WeChat   : King_Uranus
          # @公眾號(hào)    : 清風(fēng)Python
          # @Date     : 2019/9/16 22:09
          # @Software : PyCharm
          # @version  :Python 3.7.3
          # @File     : ProgressBar.py
          
          import time
          
          def progress_bar(total):
              if total <= 0:
                  raise ValueError("Wrong total number ...")
              # step = (100 // total if total <= 100 else total // 100)
          
              for i in range(0, total):
                  time.sleep(0.05)
                  step = int(100 / total * (i + 1))
                  str1 = '\r[%3d%%] %s' % (step, '>' * step)
                  print(str1, end='', flush=True)
          
          progress_bar(20)
          print()
          progress_bar(110)

          我們通過自己實(shí)現(xiàn)了進(jìn)度條的展示,那么python是否具備現(xiàn)成的模塊呢?答案是Yes![ tqdm ]

          Tqdm 是一個(gè)快速,可擴(kuò)展的Python進(jìn)度條,可以在 Python 長(zhǎng)循環(huán)中添加一個(gè)進(jìn)度提示信息,用戶只需要封裝任意的迭代器 tqdm(iterator)。

          安裝:pip install tqdm

          來看一個(gè)例子:

          from tqdm import tqdm
          import string
          import time
          
          for char in tqdm(string.ascii_uppercase):
              time.sleep(0.1)
          
          for i in tqdm(range(50)):
              time.sleep(0.05)

          tqdm的強(qiáng)大遠(yuǎn)不止此,喜歡的朋友可以去它的git網(wǎng)址詳細(xì)學(xué)習(xí):

          https://github.com/tqdm/tqdm

          Python帶色彩輸出

          python顏色輸出其實(shí)只是調(diào)用了命令號(hào)的相關(guān)特殊標(biāo)記,shell中我們也經(jīng)常使用它:

          print('\033[30m打印前景色0\033[0m')
          print('\033[31m打印前景色1\033[0m')
          print('\033[32m打印前景色2\033[0m')
          print('\033[33m打印前景色3\033[0m')
          print('\033[34m打印前景色4\033[0m')
          print('\033[35m打印前景色5\033[0m')
          print('\033[36m打印前景色6\033[0m')
          print('\033[37m打印前景色7\033[0m')
          print('\033[40m打印背景色0\033[0m')
          print('\033[41m打印背景色1\033[0m')
          print('\033[42m打印背景色2\033[0m')
          print('\033[43m打印背景色3\033[0m')
          print('\033[44m打印背景色4\033[0m')
          print('\033[45m打印背景色5\033[0m')
          print('\033[46m打印背景色6\033[0m')
          print('\033[47m打印背景色7\033[0m')
          print('\033[0m打印顯示方式0\033[0m')
          print('\033[1m打印顯示方式1\033[0m')
          print('\033[4m打印顯示方式4\033[0m')
          print('\033[5m打印顯示方式5\033[0m')
          print('\033[7m打印顯示方式7\033[0m')
          print('\033[8m打印顯示方式8\033[0m')
          print('\033[5;31;47m綜合打印\033[0m')

          每條默認(rèn)的**3[0m回復(fù)終端默認(rèn)
          最后一個(gè)3[5;31;47m**綜合打印為使用閃爍方式紅色字體白色背景色打印文字!

          參數(shù)說明:

          那么和上面一樣的套路,python中是否有模塊能實(shí)現(xiàn)這種顏色打印的功能呢?答案依然是Yes! [ colorama ]

          Python的Colorama模塊,可以跨多終端,顯示字體不同的顏色和背景,只需要導(dǎo)入colorama模塊即可,不用再每次都像linux一樣指定顏色。
          pip install colorama
          Fore是針對(duì)字體顏色,Back是針對(duì)字體背景顏色,Style是針對(duì)字體格式
          Fore: BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, RESET.
          Back: BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, RESET.
          Style: DIM, NORMAL, BRIGHT, RESET_ALL

          >>> from colorama import Fore, Back, Style
          >>> print(Fore.RED + '打印紅色文字')
          >>> 打印紅色文字
          >>> print(Back.GREEN + '設(shè)置背景為綠色')
          >>> 設(shè)置背景為綠色
          >>> print(Style.RESET_ALL)
          >>> print('恢復(fù)默認(rèn)')
          >>> 恢復(fù)默認(rèn)

          細(xì)心的網(wǎng)友看到,我們?nèi)绻麤]有恢復(fù)默認(rèn)的話,會(huì)繼承上面的顏色狀態(tài)。那么,如何像剛才一樣,每次輸出后自動(dòng)化恢復(fù)呢?

          from colorama import init, Fore, Back, Style
          
          init(autoreset=True)
          print(Fore.RED + '打印紅色文字')
          print(Back.GREEN + '設(shè)置背景為綠色')
          print('恢復(fù)默認(rèn)')

          關(guān)于裝13,只能幫大家到這里了,希望今天的內(nèi)容大家能喜歡…

          更多精彩內(nèi)容,請(qǐng)滑至頂部點(diǎn)擊右上角關(guān)注小宅哦~

          者:前端小智 來源:大遷世界

          .md文件是markdown的一種標(biāo)記語(yǔ)言,和html比較起來,更簡(jiǎn)單快捷,主要體現(xiàn)在:標(biāo)記符的數(shù)量和書寫上。

          • 標(biāo)記符的數(shù)量:html文檔需要用到數(shù)量繁多的標(biāo)記符,再輔以css來控制樣式和排版,而markdown文檔只需要四個(gè)基本的標(biāo)記符號(hào)就能完成同樣的事。
          • 標(biāo)記符的書寫:HTML文檔內(nèi)容需要同時(shí)標(biāo)記開始和結(jié)束這是一個(gè)網(wǎng)頁(yè),而markdown文檔則只要在開始位置標(biāo)記即可# 這是一個(gè)md文檔。下面介紹如何實(shí)現(xiàn)將.md文件轉(zhuǎn)換成.html文件。

          方式一:使用i5ting_toc插件

          需要先安裝npm(安裝node.js后會(huì)自帶npm),然后才能安裝i5ting插件:

          npm install i5ting_toc -g

          執(zhí)行命令行生成html文件,在輸入前要進(jìn)入到對(duì)應(yīng)根目錄下:

          i5ting_toc -f **.md

          需要注意的是:寫md文檔的特殊符號(hào)時(shí)記得添加空格。小技巧:如何快速在當(dāng)前目錄打開cmd?選擇當(dāng)前目錄,按住shift,然后鼠標(biāo)右鍵在此處打開命令窗口(在此處打開powerShell窗口)。

          方式二:使用gitbook

          同樣先需要安裝node,然后運(yùn)行:

          npm i gitbook gitbook-cli -g

          生成md文件,這個(gè)命令會(huì)生成相應(yīng)的md的文件,然后在相應(yīng)的文件里寫你的內(nèi)容即可:

          gitbook init

          md轉(zhuǎn)html,生成一個(gè)_doc目錄,打開就可以看到你html文件了。

          gitbook build

          方式三:利用前端代碼

          實(shí)現(xiàn)原理是采用node.js搭建服務(wù)器,讀取md文件轉(zhuǎn)化為html片斷。瀏覽器發(fā)送ajax請(qǐng)求獲取片段后再渲染生成html網(wǎng)頁(yè)。

          node代碼:

          var express = require('express');

          var http = require('http');

          var fs = require('fs');

          var bodyParser = require('body-parser');

          var marked = require('marked'); // 將md轉(zhuǎn)化為html的js包

          var app = express();


          app.use(express.static('src')); //加載靜態(tài)文件

          var urlencodedParser = bodyParser.urlencoded({ extended: false });


          app.get('/getMdFile',urlencodedParser, function(req, res) {

          var data = fs.readFileSync('src/test.md', 'utf-8'); //讀取本地的md文件

          res.end(JSON.stringify({

          body : marked(data)

          }));

          } );


          //啟動(dòng)端口監(jiān)聽

          var server = app.listen(8088, function () {

          var host = server.address().address;

          var port = server.address().port;

          console.log("應(yīng)用實(shí)例,訪問地址為 http://%s:%s", host, port)

          });

          前端html:

          <div id="content"> <h1 class="title">md-to-HTML web app</h1> <div id="article"> </div></div><script type="text/JavaScript" src="js/jquery-1.11.3.min.js"></script><script> var article = document.getElementById('article'); $.ajax({ url: "/getMdFile", success: function(result) { console.log('數(shù)據(jù)獲取成功'); article.innerHTML = JSON.parse(result).body; }, error: function (err) { console.log(err); article.innerHTML = '<p>獲取數(shù)據(jù)失敗</p>'; } });</script>

          代碼,沒案例,簡(jiǎn)直就是耍流氓,為了方便大家學(xué)習(xí)交流,每個(gè)知識(shí)點(diǎn)都會(huì)配上對(duì)應(yīng)的案例!文章最下邊有福利喲....

          jQuery節(jié)點(diǎn)創(chuàng)建與屬性的處理

          創(chuàng)建節(jié)點(diǎn):$("<div></div>")

          創(chuàng)建為本節(jié)點(diǎn):$("<div>我是文本節(jié)點(diǎn)</div>")

          創(chuàng)建為屬性節(jié)點(diǎn):$("<div id='test' class='aaron'>我是文本節(jié)點(diǎn)</div>")

          例子:var div = $("<div class='right'><div class='aaron'>動(dòng)態(tài)創(chuàng)建DIV元素節(jié)點(diǎn)</div></div>")

          $body.append(div)

          DOM內(nèi)部插入append()與appendTo()

          append(content)向每個(gè)匹配的元素內(nèi)部追加內(nèi)容,這個(gè)操作與對(duì)指定的元素執(zhí)行原生的appendChild方法,將它們添加到文檔中的情況類似。

          appendTo(content) 把所有匹配的元素追加到另一個(gè)、指定的元素集合中,實(shí)際上,使用這個(gè)方法是顛倒了常規(guī)的$(A).append(B)的操作,即不是把B追加到A中,而是把A追加到B中。

          DOM外部插入after()與before()

          .after(content) 在匹配元素集合中的每個(gè)元素后面插入指定內(nèi)容,作為兄弟節(jié)點(diǎn)

          .before(content) 在匹配的元素前面插入內(nèi)容

          1、before與after都是用來對(duì)相對(duì)選中元素外部增加相鄰的兄弟節(jié)點(diǎn)

          2、2個(gè)方法都是都可以接收HTML字符串,DOM 元素,元素?cái)?shù)組,或者jQuery對(duì)象,用來插入到集合中每

          個(gè)匹配元素的前面或者后面

          3、2個(gè)方法都支持多個(gè)參數(shù)傳遞after(div1,div2,....)

          DOM內(nèi)部插入prepend()與prependTo()

          .prepend() 向每個(gè)匹配元素的內(nèi)部前置內(nèi)容 和append()類型

          .prependTo() 把所有匹配的元素前置到另一個(gè)指定的元素集合中

          四個(gè)區(qū)別:

          append()向每個(gè)匹配的元素內(nèi)部追加內(nèi)容

          prepend()向每個(gè)匹配的元素內(nèi)部前置內(nèi)容

          appendTo()把所有匹配的元素追加到另一個(gè)指定元素的集合中

          prependTo()把所有匹配的元素前置到另一個(gè)指定的元素集合中

          DOM外部插入insertAfter()與insertBefore()

          insertBefore() 在目標(biāo)元素前面插入集合中每個(gè)匹配的元素(不支持多參數(shù))

          insertAfter() 在目標(biāo)元素后面插入集合中每個(gè)匹配的元素(不支持多參數(shù))

          .before()和.insertBefore()實(shí)現(xiàn)同樣的功能。主要的區(qū)別是語(yǔ)法——內(nèi)容和目標(biāo)的位置。 對(duì)于

          before()選擇表達(dá)式在函數(shù)前面,內(nèi)容作為參數(shù),而.insertBefore()剛好相反,內(nèi)容在方法前面,它將

          被放在參數(shù)里元素的前面

          例:$(".test1").before('<p style="color:red">before,在匹配元素之前增加</p>')

          $('<p style="color:red">測(cè)試insertBefore方法增加</p>').insertBefore($(".test1"))

          DOM節(jié)點(diǎn)刪除之empty()

          empty()這個(gè)方法不僅移除子元素(和其他后代元素),同樣移除元素里的文本

          例:$('.hello').empty() //刪除.hello里邊的所有內(nèi)容

          DOM節(jié)點(diǎn)刪除之remove()的有參用法和無參用法

          remove與empty一樣,都是移除元素的方法,但是remove會(huì)將元素自身移除,同時(shí)也會(huì)移除元素內(nèi)部的一切,包括綁定的事件及與該元素相關(guān)的jQuery數(shù)據(jù)。

          例:$('.hello').remove()

          $("p").remove(":contains('3')")//找到包含3文本的節(jié)點(diǎn)刪除

          DOM節(jié)點(diǎn)刪除之保留數(shù)據(jù)的刪除操作detach()

          detach()讓一個(gè)web元素托管。即從當(dāng)前頁(yè)面中移除該元素,但保留這個(gè)元素的內(nèi)存模型對(duì)象。

          例: $("p:first").detach()

          DOM拷貝clone()

          .clone()方法深度 復(fù)制所有匹配的元素集合,包括所有匹配元素、匹配元素的下級(jí)元素、文字節(jié)點(diǎn)。

          .clone(ture) 表示不僅僅克隆節(jié)點(diǎn),還把附帶的數(shù)據(jù)和事件一并克隆了!

          1、clone()方法時(shí),在將它插入到文檔之前,我們可以修改克隆后的元素或者元素內(nèi)容,

          $(this).clone().css('color','red') 表示增加了一個(gè)顏色

          2、通過傳遞true,將所有綁定在原始元素上的事件處理函數(shù)復(fù)制到克隆元素上

          3、clone()方法是jQuery擴(kuò)展的,只能處理通過jQuery綁定的事件與數(shù)據(jù)

          4、元素?cái)?shù)據(jù)(data)內(nèi)對(duì)象和數(shù)組不會(huì)被復(fù)制,將繼續(xù)被克隆元素和原始元素共享。深復(fù)制的所有數(shù)據(jù),需要手動(dòng)復(fù)制每一個(gè)

          例: $(".aaron1").on('click', function() {

          $(".left").append( $(this).clone().css('color','red') )

          })//只克隆節(jié)點(diǎn)不克隆事件

          DOM替換replaceWith()和replaceAll()

          .replaceWith( newContent ):用提供的內(nèi)容替換集合中所有匹配的元素并且返回被刪除元素的集合

          例:$("p:eq(1)").replaceWith('<a style="color:red">替換第二段的內(nèi)容</a>')

          .replaceAll( target ) :用集合的匹配元素替換每個(gè)目標(biāo)元素 目標(biāo)和源和replaceWith相反

          例:$('<a style="color:red">替換第二段的內(nèi)容</a>').replaceAll('p:eq(1)')

          DOM包裹wrap()方法

          .wrap( wrappingElement ):在集合中匹配的每個(gè)元素周圍包裹一個(gè)HTML結(jié)構(gòu),即增加父元素<p>p元素</p> 增加:$('p').wrap('<div></div>') 變成了<div><p>p元素</p></div>

          .wrap( function ) :一個(gè)回調(diào)函數(shù),返回用于包裹匹配元素的 HTML 內(nèi)容或 jQuery 對(duì)象

          例:$('p').wrap(function() {

          return '<div></div>'; //與第一種類似,只是寫法不一樣

          })

          DOM包裹unwrap()方法

          unwarp()方法 ,作用與wrap方法是相反的。將匹配元素集合的父級(jí)元素刪除,保留自身(和兄弟元素,如果存在)在原來的位置。

          例:$('p').unwarp(); //刪除p的父節(jié)點(diǎn)

          DOM包裹wrapAll()方法

          .wrapAll( wrappingElement ):給集合中匹配的元素增加一個(gè)外面包裹HTML結(jié)構(gòu)

          .wrapAll( function ) :一個(gè)回調(diào)函數(shù),返回用于包裹匹配元素的 HTML 內(nèi)容或 jQuery 對(duì)象通過回調(diào)的方式可以單獨(dú)處理每一個(gè)元素

          例:$('p').wrapAll('<div></div>') 結(jié)果:

          <div>

          <p>p元素</p>

          <p>p元素</p>

          </div> //給所有的p增加父元素,增加一個(gè),不是每個(gè)單獨(dú)增加父元素

          $('p').wrapAll(function() {

          return '<div><div/>';

          })該方法返回結(jié)果是:

          <div>

          <p>p元素</p>

          </div>

          <div>

          <p>p元素</p>

          </div>

          什么情況? 兩個(gè)例子中的結(jié)果為什么不一樣呢?小伙伴們自己查查咋回事呢?

          注意:.wrapAll()函數(shù)可以接受任何字符串或?qū)ο螅梢詡鬟f給$()工廠函數(shù)來指定一個(gè)DOM結(jié)構(gòu)。這種

          結(jié)構(gòu)可以嵌套多層,但是最內(nèi)層只能有一個(gè)元素。所有匹配元素將會(huì)被當(dāng)作是一個(gè)整體,在這個(gè)整體的外部用指定的 HTML 結(jié)構(gòu)進(jìn)行包裹。

          DOM包裹wrapInner()方法

          .wrapInner( wrappingElement ):給集合中匹配的元素的內(nèi)部,增加包裹的HTML結(jié)構(gòu)

          例:<div>p元素</div><div>p元素</div> 執(zhí)行:$('div').wrapInner('<p></p>')變成了:

          <div><p>p元素</p></div>

          <div><p>p元素</p></div>

          .wrapInner( function ) :允許我們用一個(gè)callback函數(shù)做參數(shù),每次遇到匹配元素時(shí),該函數(shù)被執(zhí)行,返回一個(gè)DOM元素,jQuery對(duì)象,或者HTML片段,用來包住匹配元素的內(nèi)容

          例:$('div').wrapInner(function() {

          return '<p></p>';

          })

          學(xué)累了吧,來點(diǎn)實(shí)惠的?

          1+1=?

          不要往下看了,下面真的沒內(nèi)容了

          .......

          .......

          哈哈 ,適可而止吧


          主站蜘蛛池模板: 国产精品一区二区久久精品| 国产婷婷色一区二区三区深爱网| 国精产品一区二区三区糖心| 国产精品区AV一区二区| 国产一区二区精品在线观看| 波多野结衣电影区一区二区三区 | 亚洲无圣光一区二区| 无码国产精品一区二区免费| 在线观看中文字幕一区| 国产伦精品一区二区三区视频金莲 | 99久久精品国产高清一区二区| 亚洲日本一区二区三区在线| 中文字幕av一区| 精品国产天堂综合一区在线| 日韩人妻无码一区二区三区综合部| 无码精品视频一区二区三区| 在线精品一区二区三区电影| 丰满少妇内射一区| 精品人妻少妇一区二区三区不卡 | 成人免费一区二区无码视频 | 成人精品视频一区二区| 国产伦精品一区二区免费| 中文字幕日韩一区二区三区不卡| 天堂成人一区二区三区| 国产内射在线激情一区| 精品免费国产一区二区三区| 久久久久久综合一区中文字幕| 2018高清国产一区二区三区| 久久精品一区二区三区中文字幕| 亚洲av无码片区一区二区三区| 精品3d动漫视频一区在线观看| 99精品一区二区免费视频| 日本一区二区三区在线网| 在线视频一区二区| 国产精品毛片a∨一区二区三区| 中文字幕无线码一区2020青青| 国产一区二区精品久久凹凸| 天美传媒一区二区三区| 中文字幕一区二区三区精彩视频 | 99精品国产一区二区三区不卡| 日韩精品一区二区午夜成人版|