Python語言程序設計: 程序計時、文件進度條、愷撒密碼

2021-03-02 Python統計分析

-與數學中整數的概念一致

-可正可負,沒有取值範圍限制


4種進位表示形式

□十進位:1010,99,-217

□二進位:以0b或0B開頭:0b010,-0B101

□八進位:以0或00開頭:0o123,-0O456

□十六進位:以0x或0X開頭:0x9a,-0X89

浮點類型,與數學中實數的概念一致

浮點數類型

浮點數間運算存在不確定尾數,不是bug

>>>0.1+0.3

0.4

>>>0.1+0.2

0.30000000004

浮點數間運算存在不確定尾數

>>>0.1+0.2==0.3

 False

>>> round(0.1+0.2,1)==0.3

 True

與數學中複數的概念一致

操作符是完成運算的一種符號體系

二元操作符有對應的增強賦值操作符

類型間可進行混合運算,生成結果為"最寬「」類型

-三種類型存在一種逐漸"擴展或變寬"的關係:整數->浮點數->複數

一些以函數形式提供的數值運算功能

基本問題:持續的價值

一年365天,每天進步1‰,累計進步多少呢?

一年365天,每天退步1,累計剩下多少呢?

- 數學公式可以求解,似乎沒必要用程序

- 但如果是三天打魚兩天曬網呢?

- 如果是雙休日又不退步呢?

問題1:1的力量

 #DayDayUpQ1.py

 dayup=pow(1.001,365)

 daydown =pow(0.999, 365)

 print("向上:{:.2f},向下:{:.2f}『』. format(dayup, daydown))

問題2:5和1%的力量

●一年365天,每天進步5或1%,累計進步多少呢?

●一年365天,每天退步5或1%,累計剩下多少呢?

#DayDayUpQ2. py

 dayfactor =0.005

 dayup=pow(1+dayfactor,365)

 daydown= pow(1-dayfactor, 365)

 print("向上:{:.2f},向下:{:.2f}」. format(dayup, daydown))

>>>1% 運行結果

問題3:工作日的力量

-一年365天,一周5個工作日,每天進步1%

-—年365天,一周2個休息日,每天退步1%

-這種工作日的力量,如何呢?

 #DayDayUpQ3. py

 dayup =1.0

 dayfactor =0.01

 for i in range(365):

     if i %7 in [6,0]:

         dayup= dayup*(1-dayfactor)

     else:

         dayup= dayup*(1+dayfactor)

 print("工作日的力量:{:.2f}". format(dayup))

問題4:工作日的努力

-工作日模式要努力到什麼水平,才能與每天努力1%一樣?

-A君:一年365天,每天進步1%,不停歇

-B君:一年365天,,每周工作5天休息2天,休息日下降1%,要多努力呢?

def..while.. ("笨辦法」試錯)

 #DayDayUpQ4.py

def dayUP(df):
dayup=1
for i in range(365):
if i % 7 in [6,0]:
dayup=dayup*(1-0.01)
else:
dayup=dayup*(1+df)
return dayup
dayfactor=0.01
while dayUP(dayfactor) < 37.78:
dayfactor+=0.001
print("工作日的努力參數是: {:.3f}". format(dayfactor))

>>>(運行結果)

工作日的努力參數是:0.019

工作日模式,每天要努力到1.9%,

相當於365模式每天1%的一倍!

-GRIT,堅毅,對長期目標的持續激情及持久耐力

-GRIT是獲得成功最重要的因素之一,牢記天天向上的力量

由0個或多個字符組成的有序字符序列

-字符串由一對單引號或一對雙引號表示

-「請輸入帶有符號的溫度值:」或者『C』

-字符串是字符的有序序列,可以對其中的字符進行索引

「請」「請輸入帶有符號的溫度值:"的第0個字符

字符串有2類共4種表示方法

-由一對單引號或雙引號表示,僅表示單行字符串

「請輸入帶有符號的溫度值:」或者 『C』

-由一對三單引號或三雙引號表示,可表示多行字符串

 「『Python

                       語言』」


字符串有2類共4種表示方法

-如果希望在字符串中包含雙引號或單引號呢?

『』這裡有個雙引號(「)』或者「這裡有個單引號(』)」

-如果希望在字符串中既包括單引號又包括雙引號呢?

「『這裡既有單引號(』)又有雙引號(」)』」

字符串的序號

使用【】獲取字符串中一個或多個字符

-索引:返回字符串中單個字符    <字符串>[M]

「請輸入帶有符號的溫度值:」[0] 或者 TempStr[-1]

-切片:返回字符串中一段字符子串 <字符串>[M:N]

請輸入帶有符號的溫度值:[1:3]或者TempStr[0:-1]

字符串切片高級用法

使用[ M:N:K ] 根據步長對字符串切片

-<字符串>[M:N],M缺失表示至開頭,,N缺失表示至結尾

"O一二三四五六七八九十"[:3]結果是"O一二"

-<字符串>[M:N:K],根據步長K對字符串切片

"O一二三四五六七八九十"[1:8:2]結果是"一三五七"

"O一二三四五六七八九十"[::-1]結果是"十九八七六五四三二O"

轉義符\

-轉義符表達特定字符的本意

"這裡有個雙引號(\")"結果為這裡有個雙引號(")

-轉義符形成一些組合,表達一些不可列印的含義

"\b"回退"\n"換行(光標移動到下行首)"\r"回車(光標移動到本行首)

字符串操作符

由0個或多個字符組成的有序字符序列

代碼一

代碼二

eval 去引號

↑把世界上所有字符都放入其中。

輸出:

「方法」在編程中是一個專有名詞

-「方法」特指<a>.<b>( )風格中的函數<b>( )

-方法本身也是函數,但與<a>有關,<a>.<b>( )風格使用

-字符串及變量也是<a>,存在一些方法

一些以方法形式提供的字符串處理功能

時間格式化

>>>t=time.gmtime()

>>>time. strftime("%Y-%m-%d  %H: %M: %S",t)

'2018-01-2612:55:20'

程序計時應用廣泛

-程序計時指測量起止動作所經歷時間的過程

-測量時間:perf_counter( )

需求分析

文本進度條

-採用字符串方式列印可以動態變化的文本進度條

-進度條需要能在一行中逐漸變化

如何獲得文本進度條的變化時間?

-採用sleep ( )模擬一個持續的進度

-似乎不那麼難

 #TextProBarV1. py

 import time

 scale 10

 print("執行開始")

 forin range(scale+1):

       a ='*'*i

       b ='. '*(scale -i)

       c =(i/scale)*100

       print("{: ^3.0f)%[{}->{}]". format(c, a, b))

       time. sleep(0.1)

 print("-執行結束-")

單行動態刷新

-刷新的本質是:用後列印的字符覆蓋之前的字符

-不能換行:print()需要被控制

-要能回退:列印後光標退回到之前的位置\r

import time
scale= 50
print("執行開始". center(scale//2,"-"))
start=time.perf_counter()
for i in range(scale+1):
a='*'*1
b='.'*(scale-i)
c=(i/scale)*100
dur=time.perf_counter() - start
print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur), end='')
time.sleep(0.1)
print("\n"+"執行結束".center(scale//2,'-'))

舉一反三

進度條擴展

-在任何運行時間需要較長的程序中增加進度條

-在任何希望提高用戶體驗的應用中增加進度條

-進度條是人機互動的紐帶之一

文本進度條的不同設計函數

三次方格式化

■獲得用戶輸入的一個數字,可能是整數或浮點數,a,計算a的三次方值,並列印輸出。

■輸出結果採用寬度20個字符、居中輸出、多餘字符採用減號(-)填充。

■如果結果超過20個字符,則以結果寬度為準。

a=int(input())
print(str(pow(a,3)).center(20,"-"))

星號三角形

讀入一個整數N,N是奇數,輸出由星號字符組成的等邊三角形,要求:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

第1行1個星號,第2行3個星號,第3行5個星號,依次類推,最後一行共N的星號。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

n = eval(input())
for i in range(1, n + 1, 2):
print("{0:^{1}}".format('*' * i, n))

愷撒密碼

愷撒密碼是古羅馬愷撒大帝用來對軍事情報進行加解密的算法,它採用了替換方法對信息中的每一個英文字符循環替換為字母表序列中該字符後面的第三個字符,即,字母表的對應關係如下:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

原文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

對於原文字符P,其密文字符C滿足如下條件:C=(P+3) mod 26‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

上述是凱撒密碼的加密方法,解密方法反之,即:P=(C-3) mod 26‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

假設用戶可能使用的輸入包含大小寫字母a~zA~Z、空格和特殊符號,請編寫一個程序,對輸入字符串進行愷撒密碼加密,直接輸出結果,其中空格不用進行加密處理。使用input()獲得輸入。

str = input()
t = ''
for i in str:
if ord('a') <= ord(i) <= ord('z'):
t += chr(ord('a')+(ord(i)-ord('a')+3)%26)
elif ord('A') <= ord(i) <= ord('Z'):
t += chr(ord('A')+(ord(i)-ord('A')+3)%26)
else:
t += i
print(t)

chr() 返回值是當前整數對應的 ASCII 字符。

ord() 函數返回值是對應的十進位整數。

中國大學MOOC課程,

Python程序設計,第3周練習答案

相關焦點

  • python小課堂17 - 30行代碼破解加密ZIP文件
    若有不懂得的地方,請回顧python小課堂1-16。在多數人眼中一直覺得黑客很神秘,實際上當初我學python入門時正是因為那會在學安全相關的東西,機緣巧合得以在360和愛春秋聯合組織的網課中學到了不少安全相關的知識。很早以前,python就被公認為黑客屆的程式語言之一,自身有著強大的第三方庫(也就是包和模塊的統稱)來使用,並且語言上手度非常容易。
  • 【好課推薦】嵩天:Python語言程序設計
    ,拿個證書同時開始像專業程式設計師一樣思考「課程面向Python零基礎學習者,將幫助大家快速、輕鬆且系統的學習Python語言,高效編寫程序」。主講:Python語言程序設計、網絡信息安全、計算機網絡等課程,研究方向是網絡體系結構、網絡信息安全、教育大數據等.
  • 今天破解了壓縮文件的密碼:使用python輕鬆編寫破解程序
    獲取ZIP文件解壓密碼今天傑瑞又閒著無事可幹,索性去做了一個非常簡單且實用的一個python小程序,這個程序破解獲得zip加密文件的密碼。獲取zip文件解壓密碼的思路是使用窮舉法去「試」出真實密碼。傑瑞今天就教大家如何使用python去破解得到zip文件的解壓密碼,僅需要不到20行代碼即可完成全部功能。實現步驟首先我們需要python裡面的一個庫——zipfile,這個庫專門用來操作zip文件的,這個庫一般是python自帶的不需要安裝。
  • 《Python語言程序設計基礎》第2版本(電子版課本)
    第2章講解兩個Python程序實例,圍繞實例介紹Python語言的語法元素和編程模式,幫助讀者建立Python語言編程的總體概念。附錄A補充介紹編寫程序所需要了解的計算機基礎概念,從數據到全球資訊網,從存儲程序結構到虛擬化,採用極簡敘述方式撰寫,適合讀者在學習本書內容時複習參考。對於初學程序設計的讀者,除附錄A作為參考外,建議按照章節順序逐步學習。
  • 計算機二級《Python語言程序設計 最新版》電子教案PDF,請收下
    內容簡介本書是根據教育部考試中心制訂的《全國計算機等級考試二級Python語言程序設計考試大綱(考試版)》的要求而編寫的。本書共分為11章,第1章介紹程序設計的基本方法,主要包括Python語言概述和開發環境配置;第2章和第3章主要介紹Python語言基本語法元素和基本數據類型;第4章介紹程序的控制結構;第5章介紹函數和代碼復用;第6章介紹組合數據類型;第7章介紹文件和數據格式化;第8章至第11章介紹Python的計算生態、標準庫和第三方庫。
  • 北京理工大學《Python語言程序設計》公開課(國家精品)
    北京理工大學《Python語言程序設計》網址:回復「
  • Python程序設計基礎 漫筆1st:Python概述
    注意1:如果電腦中同時安裝了2.x版本的和3.x版本的解釋器,需要把軟體安裝python3中的python.exe複製一份改成python3.exe,python2同樣可以設置成python2.exe注意2:Python3.0在設計的時候沒有考慮向下兼容,許多早期 Python 版本設計的程序都⽆法在 Python 3.0 上正常執⾏Tip:查看版本的方式:
  • 喜歡用Python做爬蟲嗎?進度條了解下?自製一個進度條模塊!
    實現辦法進度條最大的問題是實現輸出在一行,且實時變化,不要換行。有的同學可能已經想到了,有2種辦法:一個是來自sys庫的sys.stdout.write()函數可以替代print的一個函數,具體的大家可以自行查找相關資料哦,我們今天用第二種辦法:print本身就有可以實現的辦法,比如下面的代碼,大家可以運行下!
  • Python語言程序設計基礎(第2版) 高清pdf掃描版[48MB]
    全書一共設計了25個非常具有現代感的實例,從繪製蟒蛇、理解天天向上的力量到機器學習、網絡爬蟲,從文本進度條、統計名著人物重要性到圖像手繪效果、雷達圖繪製,絕大多數實例為作者原創,將隨著內容深入不斷激發讀者學習Python語言的熱情,因為「編程是件很有趣的事兒」。本書內容豐富、敘述清晰、循序漸進,採用新形態構建形式,提供大量擴展閱讀資料、學習資料和學習視頻。
  • Python基礎 | 大學小白如何入門Python程序設計
    一、 問題闡述對於剛剛進入大學小白的我們對許許多多課程感到陌生,例如高數、大學計算機網絡、Python語言程序設計等一些課程對於我們剛剛進入大學小白的我們很多時間就聽不懂老師在講什麼,大學和高中完全是不一樣的,大學更多的時間是需要自己去自學,僅僅靠老師上課講的那一點時間是完全不夠的,更多的需要自己課後的練習
  • 專題19 | Python文件打開與讀取
    收錄於話題 #Python語言程序設計 前五個模塊我們分別學習了Python環境搭建、數據類型、流程控制、函數模塊和面向對象等基礎知識,接下來我們將接觸Python
  • 《Python程序設計基礎(第2版)》習題答案
    3)《Python程序設計基礎(第2版)》清華大學出版社(2018年9月第6次印刷)https://item.jd.com/12319738.html4)《中學生可以這樣學Python》清華大學出版社(2018年9月第3次印刷)https://item.jd.com/12258900.html5)《Python程序設計開發寶典》清華大學出版社(2018年2月第
  • 用Python使用C語言程序(Windows平臺)
    qianyan在機器學習中,很多時候我們需要Python和C的混合編程,最重要的原因是為了性能效率的提升: 解釋型語言一般比編譯型語言慢,一般提高性能的有效做法是,先做性能測試,找出性能瓶頸部分,然後把瓶頸部分在擴展中實現。本文的目標是在windows平臺下(使用pycharm),實現python調用C語言編寫的程序。
  • 期末考試樣卷——python程序語言
    機器語言 B. 彙編語言  C.JAVA語言  D.C語言2、pow(3, 2) 的運算結果是(  )。A. 8  B. 2  C. 3  D. 93、下面不符合Python語言變量命名規則的是(  )。A.
  • Python—程序語言入門
    主要教法     講授演示法+上機操作   教學過程一、複習鞏固1、什麼是編程2、Python--我們和計算機溝通的語言所想要表達的意思——>編程軟體翻譯成二進位——>計算機接收並執行常用、最流行的幾種程序語言:C、C++、c#、Java 、VB、python
  • 專題21 | Python文件複製、移動與重命名
    收錄於話題 #Python語言程序設計TrueTrueimport osimport shutil#複製文件到同目錄,並重命名為file3.txtshutil.copyfile(r"E:\file1.txt",r"E:\file3.txt")#檢查是否複製成功print(os.path.exists(r"E:\file3.txt"))
  • 十六本python入門學習書籍推薦,python入門新手必看
    隨著人工智慧時代的到來,python程式語言一步登天衝到編程排行榜第一名,因此更多朋友想轉行學習python程式語言的朋友,可以一起看一下:python入門新手必看的十六本python入門學習書籍1、python基礎教程司維所著圖書:本書包括Python程序設計的方方面面,首先從Python
  • C++語言程序設計
    如果放棄其中複雜的面向對象特性,以及泛型的絕大多數特性(但保留其中極其有用的標準模板庫STL中的部分算法和容器),則剩餘部分也十分適合做為入門語言來學,而且用這樣的「簡化」C++語言,或者說,「更強」的C++語言編寫程序,既比用C語言更為方便和高效,又無需掌握寫大型程序才會用到的龐雜的面向對象的特性 --- 學習成本增加很少而編程效率提高很多。
  • 加速程序開發 Python整合C語言模塊
    而作為軟體開發的傳統程式語言——C語言,卻能在這些問題上很好地彌補Python語言的不足。因此,本文通過實例研究如何在Python程序中整合既有的C語言模塊,包括用C語言編寫的源程序和動態連結庫等,從而充分發揮Python語言和C語言各自的優勢。Python語言的特點Python作為一門程序開發語言,被越來越多地運用到快速程序開發。
  • 慢步python,如何用python語言創造出一個真正的獨立exe程序?
    我們學習編程,終極目標還是編寫一個獨立的應用程式。獨立的應用程式應該像QQ,微信一樣不依靠其他程序運行,只有平臺支持,就可以運行。從這個意義上說,所用應用程式都是基於作業系統運行的。那麼如何用python語言創造出一個真正的獨立的應用程式?就是我們電腦上的exe程序?