0008 加減乘除也會算錯?還要編寫程序測試?

首先,通知一個事情:經(jīng)過考慮,決定創(chuàng)建一個QQ群,方便交流學(xué)習(xí),比較方便加入,包括發(fā)布一些文件以及支持遠程協(xié)助等等,群號:603559164,歡迎大家加入。


這節(jié)課,將繼續(xù)修改四則運算器,改成讓用戶輸入計算結(jié)果,然后程序給出判斷結(jié)果是否正確。

上節(jié)課的作業(yè)

輸入一個分數(shù),根據(jù)分數(shù)進行判斷,大于等于90分屏幕輸出best,大于等于80分屏幕輸出good,大于等于60分屏幕輸出pass,其他屏幕輸出fail

這是一個經(jīng)典的if分支語句題目

正確的結(jié)果類似如下:

score=input("please input score:")

if score>=90 :

? ? print "best"

elif score>=80 :

? ? print "good"

elif score>=60 :

? ? print "pass"

else :

? ? print "fail"

運行結(jié)果如下:

增加注釋行

到目前為止,已經(jīng)寫了不少程序文件了,add.py,subtract.py,cala.py,score.py

程序文件多了之后,會發(fā)現(xiàn)如何快速記起程序的內(nèi)容和目的,會有點困難,特別是當別人來看你的代碼的時候

為了幫助我們自己和別人,我們需要給程序增加一些描述文字和說明,這就是注釋

注釋的格式是這樣的:? #注釋內(nèi)容

在行首如果是#開頭的表示這一行代碼是注釋,將不會被程序執(zhí)行,即使#后面跟著的是代碼

我們將最早寫的add.py拿出來,當時刪掉了一行代碼,其實也可以用注釋來完成:

num1=input("num1:")

#print num1

num2=input("num2:")

num3=num1+num2

print num1,"+",num2,"=",num3

這樣第2行代碼就不會執(zhí)行

我們打開score.py,在最前面增加說明:

這樣,每新做一個程序,就在程序最前面增加注釋說明這個程序的目的是什么,作者是誰,什么時候創(chuàng)建的,方便其他人查看和了解

再次執(zhí)行程序,會發(fā)現(xiàn)提示錯誤如下:

這是因為增加了中文的原因,解決的辦法是指定文件的編碼方式:

在文件第一行增加如下代碼:

#coding=utf-8


再次執(zhí)行代碼,發(fā)現(xiàn)正常了

四則運算測試器修改代碼

接下來,開始改造之前寫的四則運算器程序,改成讓用戶輸入計算結(jié)果,然后程序給出判斷結(jié)果是否正確。

首先,打開cala.py,另存為cala_test.py

然后在程序開始添加注釋說明:

#coding=utf-8

#四則運算測試器程序

#輸入2個數(shù)字,1個操作符,1個計算結(jié)果,判斷是否正確

#作者:學(xué)哥? 時間:2016/12/8


很明顯,需要增加一個輸入,讓用戶輸入計算結(jié)果,然后判斷計算結(jié)果num3和輸入的結(jié)果是否一致,輸出結(jié)果

在print 這行之前,增加下列代碼:

result=input("your result:")

if num3==result :

? ? print "right"

else :

? ? print "error"

然后把原來的print這行注釋掉

執(zhí)行結(jié)果如下:

大家在測試程序的時候,除了按照理想或者預(yù)期的數(shù)據(jù)進行輸入之外,還要輸入一些非預(yù)期的數(shù)據(jù),這樣才能夠完整的測試代碼是否完美

比如上面的程序,如果在預(yù)期輸入數(shù)字的地方,輸入了一個字符a,或者輸入了帶引號的"a",或者在輸入操作符的地方輸入一個數(shù)字

看看會有什么結(jié)果,如果發(fā)現(xiàn)錯誤,看看應(yīng)該如何修改,進行限制輸入,如果不知道的話,可以自己去網(wǎng)上搜索,學(xué)會自己尋找答案

因為這個并非我們課程的重點,這里就不講解了。

輸入數(shù)值改為程序生成隨機數(shù)

需要輸入數(shù)值和操作符太麻煩了,能不能讓程序自己生成數(shù)值和操作符,我們只要輸入結(jié)果,看看我們做對了沒有,那多好

那么,就來做100以內(nèi)的加減乘除測試題目吧

首先,將上面的文件另存為cala_test_rand.py

其次,在注釋的4行下面,將前面3行輸入代碼都刪除掉

num1=input("num1")

operate=input("your operate:")

num2=input("num2:")

然后在程序開始這個地方增加以下代碼:

import random

num1=random.randint(1,99)

num2=random.randint(1,99)

operateint=random.randint(1,4)

if operateint==1:

? ? operate="+"

elif operateint==2:

? ? operate="-"

elif operateint==3:

? ? operate="*"

else:

? ? operate="/"

print num1,operate,num2,"="

完整代碼如下:

結(jié)果如下:

注意測試的時候,除法是進行整除,小數(shù)位舍棄

代碼說明

import random 引入一個模塊random

random.randint(1,99) 生成一個1到99范圍之內(nèi)的隨機整數(shù)

random.randint(1,4) 生成一個1到4范圍之內(nèi)的隨機整數(shù)

然后根據(jù)1到4,將運算符設(shè)置為加減乘除

后續(xù)代碼不變

關(guān)于模塊和函數(shù),后續(xù)課程會詳細說明,這里只要知道是什么就可以了


課后作業(yè)

1. 輸入數(shù)字1-7判斷是星期幾

2. 收集星座具體的日期范圍,考慮一下如何實現(xiàn)輸入一個月和日,輸出所屬星座

往期教程

0001 零基礎(chǔ)的小白能學(xué)會編程嗎?

0002 真的嗎,700元的電腦可以學(xué)會編程?

0003 十分鐘組裝一臺電腦開始編程

0004 如何編寫人生的第一行代碼helloworld

0005 鍵盤打字如何練成像黑客一樣的飛速

0006 編程入門python語言之加法計算器

0007 編程入門python語言之四則運算器

第一部分前7課小結(jié)和課程規(guī)劃說明及微信群主招募

因為教程是系列教程,前后關(guān)聯(lián)性非常強,請大家按照微信公眾號的發(fā)布時間先后次序進行閱讀。

微信公眾號里面直接輸入序號可以查看該序號課程,例如輸入0001可以查看【0001 零基礎(chǔ)的小白能學(xué)會編程嗎?】

作者簡介

學(xué)哥,二十年編程經(jīng)驗,歷任程序員,資深程序員,技術(shù)經(jīng)理,項目經(jīng)理,產(chǎn)品經(jīng)理,系統(tǒng)架構(gòu)師,IT總監(jiān)。愛好篆刻,閱讀,美食。

教程簡介

每天半小時零基礎(chǔ)學(xué)編程。大人可以學(xué),小孩也可以學(xué)。練打字,用軟件,寫文檔,做網(wǎng)站,做App,編游戲,數(shù)據(jù)庫,玩硬件,寫程序,3D打印,無人機,機器人。

html,css,javascript,python,php,java,swift,mysql,android,ios,raspberry pi,scratch.?

?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容