標籤:
認真!?????
------------
利用Python寫的一個從1加到任意大小的數字(電腦吃得消再說)的互動指令碼。
在這裡我運用了range函數(我喜歡叫它蟒嶺函數,因為range有“嶺”的意思),此函數可以有個有趣的用法:range(x),解譯器會列出從0~x-1的所有整數;如果是range(y,x),解譯器就會列出從從y~x-1的所有整數(x-1 等價於 不包括x,應該能夠理解吧);還有一種range(y,x,z),解譯器就會跳躍z列出從y~x-1的所有整數,預設的跳躍間距為1,就如range(y,x)等價於range(y,x,1).
看圖應該更好理解:
注意在最後一句中,range(11,2)不等價於range(0,11,2).在這裡range(11,2)被判斷為“從11~1”的所有整數,自然返回的是空的列表,而不是None,None沒有實際意義,而空的列表有實際意義。
步入正題。
#PlusCal V1.9 (alpha) by:b1ta - 2015/07/17/09:07name = raw_input("Eh,What is your name:")print "Hello," + name + "!"y = 1while y < 2: a = input("Please enter a number:") sum = 0 for i in range(1,a+1): sum += i print "Nice,1+2+3+..." ,a,"=",sum y = input("If you want to try it again,Enter number 1,or enter other number to exit:")print name + ",Press your ‘Enter‘ to say Good-bye."exit()#Have fun!
這是一個有缺陷的指令碼,我在for迴圈中的range的參數是(1,x+1),可以將前面的1省略,只是一個0的問題。
變數是不能轉換為字串的,但是可以混用,但要注意如果是整數型必須要用逗點(,)。使用加號的話會出現如下錯誤
>>> x=1
>>> y="a"
>>> print x+y
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
print x+y
TypeError: unsupported operand type(s) for +: ‘int‘ and ‘str‘
因為整數型不能和字串加在一起。
缺陷挺多的,比如第六行while迴圈條件可以改進<y/n>,相對應的是第11行。第6行應加入“如不是給定條件(數字)重新輸入”機制(try)。
while True: a=None try: a=int(input("Please enter a number:")) except:pass if type(a)==int:break
如果輸入的不是數位話則會一直迴圈
雙等號用於檢測,例如1==2得到
False
在第11行,如果輸入的是小於2的數,則繼續執行計算,如果不是,則跳出while。在這裡有個缺陷,當我輸入a時也會照樣迴圈。原因是因為這裡的變數為a,並且已經賦值了,所以命名a並不可取,於是乎將a改為num.命名最好不要隨隨便便,八竿子打不著邊到時自己也看不懂:
name = raw_input("Eh,What is your name:")print "Hello," + name + "!"y = 1while y < 2: while True: num=None try: num=int(input("Please enter a number:")) except:pass if type(num)==int:break sum = 0 for i in range(1,a+1): sum += i print "Nice,1+2+3+..." ,num,"=",sum y = input("If you want to try it again,Enter number 1,or enter other number to exit:")print name + ",Press your ‘Enter‘ to say Good-bye."exit()
現在還差第6行和第15行的選擇判斷(是否繼續運算),我的方法是輸入1繼續,其他數字則退出。這個好辦,改變while的條件為:
while 0<y<2
最後再修改下退出問題,將倒數兩行刪除,添加:
raw_input("Press your ‘Enter‘ to say Good-bye.")
把exit()是因為它會殺死解譯器,這個可以自己實驗區別比如有時候指令碼結束後還要輸入其他代碼,exit()就會在這時候“殺死”解譯器(殺死進程,就是將解譯器關了)。
最後完工:
#PlusCal V3.0 by:b1ta - 2015/07/17/15:06name = raw_input("Eh,What is your name:")print "Hello," + name + "!"y = 1while 0<y<2: while True: num=None try: num=int(input("Please enter a number:")) except:pass if type(num)==int:break sum = 0 for i in range(1,num+1): sum += i print "Nice,1+2+3+..." ,num,"=",sum y = input("If you want to try it again,Enter number 1,or enter other number to exit:")raw_input("Press your ‘Enter‘ to say Good-bye.")#Have fun!
╮( ̄▽ ̄")╭
無恥的求推薦:您有沒有對本文章感興趣呢?(正確答案:有? (? ? ?)?)
有! 沒有
×(●‘?‘●)?♥那麼點右下方的推薦吧...~\(≧▽≦)/~就這麼愉快的決定了!×(┳_┳)...
我會再努力的...(?﹏?)
那麼,為了鼓勵我,點右下方的推薦如何?? (? ? ?)?
好呀好呀!
利用python寫出1加到任意數關於range()函數妙用的互動小程式