python核心程式設計學習(四)

2021-09-01 04:03:47 字數 1700 閱讀 2385

乙個計算簡單加減法的例子:

'''

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...