這節(jié)課,將繼續(xù)修改四則運(yùn)算器,改成讓用戶輸入計(jì)算結(jié)果,然后程序給出判斷結(jié)果是否正確。
上節(jié)課的作業(yè)
輸入一個(gè)分?jǐn)?shù),根據(jù)分?jǐn)?shù)進(jìn)行判斷,大于等于90分屏幕輸出best,大于等于80分屏幕輸出good,大于等于60分屏幕輸出pass,其他屏幕輸出fail
這是一個(gè)經(jīng)典的if分支語(yǔ)句題目
正確的結(jié)果類似如下:
score=input("please input score:")
if score>=90 :
PRint "best"
elif score>=80 :
print "good"
elif score>=60 :
print "pass"
else :
print "fail"
運(yùn)行結(jié)果如下:
增加注釋行
到目前為止,已經(jīng)寫(xiě)了不少程序文件了,add.py,subtract.py,cala.py,score.py
程序文件多了之后,會(huì)發(fā)現(xiàn)如何快速記起程序的內(nèi)容和目的,會(huì)有點(diǎn)困難,特別是當(dāng)別人來(lái)看你的代碼的時(shí)候
為了幫助我們自己和別人,我們需要給程序增加一些描述文字和說(shuō)明,這就是注釋
注釋的格式是這樣的: #注釋內(nèi)容
在行首如果是#開(kāi)頭的表示這一行代碼是注釋,將不會(huì)被程序執(zhí)行,即使#后面跟著的是代碼
我們將最早寫(xiě)的add.py拿出來(lái),當(dāng)時(shí)刪掉了一行代碼,其實(shí)也可以用注釋來(lái)完成:
num1=input("num1:")
#print num1
num2=input("num2:")
num3=num1+num2
print num1,"+",num2,"=",num3
這樣第2行代碼就不會(huì)執(zhí)行
我們打開(kāi)score.py,在最前面增加說(shuō)明:
這樣,每新做一個(gè)程序,就在程序最前面增加注釋說(shuō)明這個(gè)程序的目的是什么,作者是誰(shuí),什么時(shí)候創(chuàng)建的,方便其他人查看和了解
再次執(zhí)行程序,會(huì)發(fā)現(xiàn)提示錯(cuò)誤如下:
這是因?yàn)樵黾恿酥形牡脑颍鉀Q的辦法是指定文件的編碼方式:
在文件第一行增加如下代碼:
#coding=utf-8
再次執(zhí)行代碼,發(fā)現(xiàn)正常了
四則運(yùn)算測(cè)試器修改代碼
接下來(lái),開(kāi)始改造之前寫(xiě)的四則運(yùn)算器程序,改成讓用戶輸入計(jì)算結(jié)果,然后程序給出判斷結(jié)果是否正確。
首先,打開(kāi)cala.py,另存為cala_test.py
然后在程序開(kāi)始添加注釋說(shuō)明:
#coding=utf-8
#四則運(yùn)算測(cè)試器程序
#輸入2個(gè)數(shù)字,1個(gè)操作符,1個(gè)計(jì)算結(jié)果,判斷是否正確
#作者:學(xué)哥 時(shí)間:2016/12/8
很明顯,需要增加一個(gè)輸入,讓用戶輸入計(jì)算結(jié)果,然后判斷計(jì)算結(jié)果num3和輸入的結(jié)果是否一致,輸出結(jié)果
在print 這行之前,增加下列代碼:
result=input("your result:")
if num3==result :
print "right"
else :
print "error"
然后把原來(lái)的print這行注釋掉
執(zhí)行結(jié)果如下:
大家在測(cè)試程序的時(shí)候,除了按照理想或者預(yù)期的數(shù)據(jù)進(jìn)行輸入之外,還要輸入一些非預(yù)期的數(shù)據(jù),這樣才能夠完整的測(cè)試代碼是否完美
比如上面的程序,如果在預(yù)期輸入數(shù)字的地方,輸入了一個(gè)字符a,或者輸入了帶引號(hào)的"a",或者在輸入操作符的地方輸入一個(gè)數(shù)字
看看會(huì)有什么結(jié)果,如果發(fā)現(xiàn)錯(cuò)誤,看看應(yīng)該如何修改,進(jìn)行限制輸入,如果不知道的話,可以自己去網(wǎng)上搜索,學(xué)會(huì)自己尋找答案
因?yàn)檫@個(gè)并非我們課程的重點(diǎn),這里就不講解了。
輸入數(shù)值改為程序生成隨機(jī)數(shù)
需要輸入數(shù)值和操作符太麻煩了,能不能讓程序自己生成數(shù)值和操作符,我們只要輸入結(jié)果,看看我們做對(duì)了沒(méi)有,那多好
那么,就來(lái)做100以內(nèi)的加減乘除測(cè)試題目吧
首先,將上面的文件另存為cala_test_rand.py
其次,在注釋的4行下面,將前面3行輸入代碼都刪除掉
num1=input("num1")
Operate=input("your operate:")
num2=input("num2:")
然后在程序開(kāi)始這個(gè)地方增加以下代碼:
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é)果如下:
注意測(cè)試的時(shí)候,除法是進(jìn)行整除,小數(shù)位舍棄
代碼說(shuō)明
import random 引入一個(gè)模塊random
random.randint(1,99) 生成一個(gè)1到99范圍之內(nèi)的隨機(jī)整數(shù)
random.randint(1,4) 生成一個(gè)1到4范圍之內(nèi)的隨機(jī)整數(shù)
然后根據(jù)1到4,將運(yùn)算符設(shè)置為加減乘除
后續(xù)代碼不變
關(guān)于模塊和函數(shù),后續(xù)課程會(huì)詳細(xì)說(shuō)明,這里只要知道是什么就可以了
課后作業(yè)
1. 輸入數(shù)字1-7判斷是星期幾
2. 收集星座具體的日期范圍,考慮一下如何實(shí)現(xiàn)輸入一個(gè)月和日,輸出所屬星座
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注