乙個計算簡單加減法的例子:
'''
created on 2012-3-7
@author: administrator
'''#!/usr/bin/env python
from operator import add,sub
from random import randint,choice
ops=
maxtries=2
def doprob():
op=choice('+-')
nums=[randint(1,10) for i in range(2)]
nums.sort(reverse=true)
ans=ops[op](*nums)
pr='%d %s %d =' % (nums[0],op,nums[1])
oops = 0
while true:
try:
if int(raw_input(pr))==ans:
print 'correct!'
break
if oops == maxtries:
print 'answer \n%s%d' %(pr,ans)
else:
print 'incorrect... try again'
oops+=1
except(keyboardinterrupt,eoferror,valueerror):
print 'invalid input... try again'
def main():
while true:
doprob()
try:
opt = raw_input('again?[y]').lower()
if opt and opt[0]=='n':
break
except(keyboardinterrupt,eoferror):
break
if __name__=='__main__':
main()
執行嘍:
3 - 2 =1
correct!
again?[y]y
8 + 3 =11
correct!
again?[y]y
8 - 6 =3
incorrect... try again
8 - 6 =2
correct!
again?[y]
最值得注意的是:ans=ops[op](*nums) ,不知道什麼意思,自己在idle上測試一下吧:
nu=[3,2]
from operator import add
add([3,2])
traceback (most recent call last):
file "", line 1, in
add([3,2])
typeerror: op_add expected 2 arguments, got 1
看來不行啊
但是add(*nu) 這樣是可以的。
百思不解*nu是什麼意思,.....經過朋友的幫助才知道是拆分傳參,現在是把nu列表中的n個元素拆分,作為引數傳給add()函式,還有一種傳參是將字典型別的引數傳入,然後拆分成多個引數,形式就是fun(**d)。
python核心程式設計學習(一)
以下是核心程式設計中乙個stack的例子 created on 2012 3 6 author administrator usr bin env python stack def pu def popit if len stack 0 print has empty else print remo...
python核心程式設計學習(三)
核心程式設計中的檔案操作的例子 created on 2012 3 7 author administrator usr bin env python import os for tmpdir in c r if os.path.isdir tmpdir print tmpdir break els...
python核心程式設計學習(六)
乙個函式傳引數的例子 created on 2012 3 8 author administrator usr bin env python def testit func,nkwargs,kwargs try retval func nkwargs,kwargs result true,retva...