¡¶Python³ÌÐòÉè¼Æ¡·Ï°ÌâÓë²Î¿¼´ð°¸
µÚ1Õ »ù´¡ÖªÊ¶
1.1 ¼òµ¥ËµÃ÷ÈçºÎÑ¡ÔñÕýÈ·µÄPython°æ±¾¡£ ´ð£º
ÔÚÑ¡ÔñPythonµÄʱºò£¬Ò»¶¨ÒªÏÈ¿¼ÂÇÇå³þ×Ô¼ºÑ§Ï°PythonµÄÄ¿µÄÊÇʲô£¬´òËã×öÄÄ·½ÃæµÄ¿ª·¢£¬ÓÐÄÄЩÀ©Õ¹¿â¿ÉÓã¬ÕâЩÀ©Õ¹¿â×î¸ßÖ§³ÖÄĸö°æ±¾µÄPython£¬ÊÇPython 2.x»¹ÊÇPython 3.x£¬×î¸ßÖ§³Öµ½Python 2.7.6»¹ÊÇPython 2.7.9¡£ÕâЩÎÊÌⶼȷ¶¨ÒÔºó£¬ÔÙ×ö³ö×Ô¼ºµÄÑ¡Ôñ£¬ÕâÑù²ÅÄÜʰ빦±¶£¬¶ø²»ÖÁÓÚ°Ñ´óÁ¿Ê±¼äÀË·ÑÔÚPythonµÄ·´¸´°²×°ºÍÐ¶ÔØÉÏ¡£Í¬Ê±»¹Ó¦¸Ã×¢Ò⣬µ±¸üеÄPython°æ±¾ÍƳöÖ®ºó£¬²»Òª¼±ÓÚ¸üУ¬¶øÊÇÓ¦¸ÃµÈÈ·¶¨×Ô¼ºËù±ØÐëʹÓõÄÀ©Õ¹¿âÒ²ÍÆ³öÁ˽Ïа汾֮ºóÔÙ½øÐиüС£
¾¡¹ÜÈç´Ë£¬Python 3±Ï¾¹ÊÇ´óÊÆËùÇ÷£¬Èç¹ûÄúÔÝʱ»¹Ã»Ïëµ½Òª×öʲôÐÐÒµÁìÓòµÄÓ¦Óÿª·¢£¬»òÕß½ö½öÊÇΪÁ˳¢ÊÔÒ»ÖÖеġ¢ºÃÍæµÄÓïÑÔ£¬ÄÇôÇëºÁ²»ÓÌÔ¥µØÑ¡ÔñPython 3.xϵÁеÄ×î¸ß°æ±¾£¨Ä¿Ç°ÊÇPython 3.4.3£©¡£
1.2 Ϊʲô˵Python²ÉÓõÄÊÇ»ùÓÚÖµµÄÄÚ´æ¹ÜÀíģʽ£¿ ´ð£º
Python²ÉÓõÄÊÇ»ùÓÚÖµµÄÄÚ´æ¹ÜÀí·½Ê½£¬Èç¹ûΪ²»Í¬±äÁ¿¸³ÖµÏàֵͬ£¬ÔòÔÚÄÚ´æÖÐÖ»ÓÐÒ»·Ý¸ÃÖµ£¬¶à¸ö±äÁ¿Ö¸Ïòͬһ¿éÄÚ´æµØÖ·£¬ÀýÈçÏÂÃæµÄ´úÂë¡£ >>> x = 3 >>> id(x) 10417624 >>> y = 3 >>> id(y) 10417624 >>> y = 5 >>> id(y) 10417600 >>> id(x)
10417624
1.3 ÔÚPythonÖе¼ÈëÄ£¿éÖеĶÔÏóÓÐÄļ¸ÖÖ·½Ê½£¿ ´ð£º³£ÓõÄÓÐÈýÖÖ·½Ê½£¬·Ö±ðΪ ? import Ä£¿éÃû [as ±ðÃû]
? from Ä£¿éÃû import ¶ÔÏóÃû[ as ±ðÃû] ? from math import *
1.4 ʹÓÃpipÃüÁî°²×°numpy¡¢scipyÄ£¿é¡£ ´ð£ºÔÚÃüÁîÌáʾ·û»·¾³ÏÂÖ´ÐÐÏÂÃæµÄÃüÁ pip install numpy pip install scipy
1.5 ±àд³ÌÐò£¬Óû§ÊäÈëÒ»¸öÈýλÒÔÉϵÄÕûÊý£¬Êä³öÆä°ÙλÒÔÉϵÄÊý×Ö¡£ÀýÈçÓû§ÊäÈë1234£¬Ôò³ÌÐòÊä³ö12¡££¨Ìáʾ£ºÊ¹ÓÃÕû³ýÔËËã¡££©
´ð£º
1£©Python 3.4.2´úÂ룺
x = input('Please input an integer of more than 3 digits:') try:
x = int(x) x = x//100 if x == 0:
print('You must input an integer of more than 3 digits.') else:
print(x)
except BaseException:
print('You must input an integer.')
2£©Python 2.7.8´úÂ룺
import types
x = input('Please input an integer of more than 3 digits:') if type(x) != types.IntType:
print 'You must input an integer.' elif len(str(x)) != 4:
print 'You must input an integer of more than 3 digits.' else:
print x//100
µÚ2Õ PythonÊý¾Ý½á¹¹
2.1 ΪʲôӦ¾¡Á¿´ÓÁбíµÄβ²¿½øÐÐÔªËØµÄÔö¼ÓÓëɾ³ý²Ù×÷£¿ ´ð£º
µ±ÁбíÔö¼Ó»òɾ³ýÔªËØÊ±£¬Áбí¶ÔÏó×Ô¶¯½øÐÐÄÚ´æÀ©Õ¹»òÊÕËõ£¬´Ó¶ø±£Ö¤ÔªËØÖ®¼äûÓзì϶£¬µ«ÕâÉæ¼°µ½ÁбíÔªËØµÄÒÆ¶¯£¬Ð§Âʽϵͣ¬Ó¦¾¡Á¿´ÓÁбíβ²¿½øÐÐÔªËØµÄÔö¼ÓÓëɾ³ý²Ù×÷ÒÔÌá¸ß´¦ÀíËÙ¶È¡£
2.2 ±àд³ÌÐò£¬Éú³É°üº¬1000¸ö0µ½100Ö®¼äµÄËæ»úÕûÊý£¬²¢Í³¼ÆÃ¿¸öÔªËØµÄ³öÏÖ´ÎÊý¡££¨Ìáʾ£ºÊ¹Óü¯ºÏ¡££©
´ð£º
1£©Python 3.4.2´úÂë
import random
x = [random.randint(0,100) for i in range(1000)] d = set(x) for v in d:
print(v, ':', x.count(v))
2£©Python 2.7.8´úÂë
import random
x = [random.randint(0,100) for i in range(1000)] d = set(x) for v in d:
print v, ':', x.count(v)
2.3 ±àд³ÌÐò£¬Óû§ÊäÈëÒ»¸öÁбíºÍ2¸öÕûÊý×÷Ϊϱ꣬ȻºóÊä³öÁбíÖнéÓÚ2¸öϱêÖ®¼äµÄÔªËØ×é³ÉµÄ×ÓÁÐ±í¡£ÀýÈçÓû§ÊäÈë[1,2,3,4,5,6]ºÍ2,5£¬³ÌÐòÊä³ö[3,4,5,6]¡£
´ð£º
1£©Python 3.4.2´úÂë
x = input('Please input a list:') x = eval(x)
start, end = eval(input('Please input the start position and the end position:')) print(x[start:end])
2£©Python 2.7.8´úÂë
x = input('Please input a list:')
start, end = input('Please input the start position and the end position:') print x[start:end]
2.4 Éè¼ÆÒ»¸ö×ֵ䣬²¢±àд³ÌÐò£¬Óû§ÊäÈëÄÚÈÝ×÷Ϊ¼ü£¬È»ºóÊä³ö×ÖµäÖжÔÓ¦µÄÖµ£¬Èç¹ûÓû§ÊäÈëµÄ¼ü²»´æÔÚ£¬ÔòÊä³ö¡°ÄúÊäÈëµÄ¼ü²»´æÔÚ£¡¡±
´ð£º
1£©Python 3.4.2´úÂë
d = {1:'a', 2:'b', 3:'c', 4:'d'} v = input('Please input a key:') v = eval(v)
print(d.get(v,'ÄúÊäÈëµÄµÄ¼ü²»´æÔÚ'))
2£©Python 2.7.8´úÂë
d = {1:'a', 2:'b', 3:'c', 4:'d'} v = input('Please input a key:')
print(d.get(v,'ÄúÊäÈëµÄµÄ¼ü²»´æÔÚ'))
2.5 ±àд³ÌÐò£¬Éú³É°üº¬20¸öËæ»úÊýµÄÁÐ±í£¬È»ºó½«Ç°10¸öÔªËØÉýÐòÅÅÁУ¬ºó10¸öÔªËØ½µÐòÅÅÁУ¬²¢Êä³ö½á¹û¡£
´ð£º
1£©Python 3.4.2´úÂë
import random
x = [random.randint(0,100) for i in range(20)] print(x) y = x[0:10] y.sort() x[0:10] = y y = x[10:20]
y.sort(reverse=True) x[10:20] = y print(x)
2£©Python 2.7.8´úÂë
import random
x = [random.randint(0,100) for i in range(20)] print x y = x[0:10] y.sort()
x[0:10] = y y = x[10:20]
y.sort(reverse=True) x[10:20] = y print x
2.6 ÔÚPythonÖУ¬×ÖµäºÍ¼¯ºÏ¶¼ÊÇÓÃÒ»¶Ô ´óÀ¨ºÅ ×÷Ϊ¶¨½ç·û£¬×ÖµäµÄÿ¸öÔªËØÓÐÁ½²¿·Ö×é³É£¬¼´ ¼ü ºÍ Öµ £¬ÆäÖÐ ¼ü ²»ÔÊÐíÖØ¸´¡£
2.7 ¼ÙÉèÓÐÁбía = ['name','age','sex']ºÍb = ['Dong',38,'Male']£¬ÇëʹÓÃÒ»¸öÓï¾ä½«ÕâÁ½¸öÁбíµÄÄÚÈÝת»»Îª×ֵ䣬²¢ÇÒÒÔÁбíaÖеÄÔªËØÎª¼ü£¬ÒÔÁбíbÖеÄÔªËØÎªÖµ£¬Õâ¸öÓï¾ä¿ÉÒÔдΪ c = dict(zip(a,b))¡£
2.8 ¼ÙÉèÓÐÒ»¸öÁбía£¬ÏÖÒªÇó´ÓÁбíaÖÐÿ3¸öÔªËØÈ¡1¸ö£¬²¢ÇÒ½«È¡µ½µÄÔªËØ×é³ÉеÄÁбíb£¬¿ÉÒÔʹÓÃÓï¾ä b = a[::3]¡£
2.9 ʹÓÃÁбíÍÆµ¼Ê½Éú³É°üº¬10¸öÊý×Ö5µÄÁÐ±í£¬Óï¾ä¿ÉÒÔдΪ [5 for i in range(10)]¡£ 2.10 ²»¿ÉÒÔ £¨¿ÉÒÔ¡¢²»¿ÉÒÔ£©Ê¹ÓÃdelÃüÁîÀ´É¾³ýÔª×éÖеIJ¿·ÖÔªËØ¡£
µÚ3Õ ѡÔñ½á¹¹ÓëÑ»·½á¹¹
3.1 ·ÖÎöÂß¼ÔËËã·û¡°or¡±µÄ¶Ì·ÇóÖµÌØÐÔ¡£ ´ð£º
¼ÙÉèÓбí´ïʽ¡°±í´ïʽ1 or ±í´ïʽ2¡±£¬Èç¹û±í´ïʽ1µÄÖµµÈ¼ÛÓÚTrue£¬ÄÇôÎÞÂÛ±í´ïʽ2µÄÖµÊÇʲô£¬Õû¸ö±í´ïʽµÄÖµ×ÜÊǵȼÛÓÚTrue¡£Òò´Ë£¬²»ÐèÒªÔÙ¼ÆËã±í´ïʽ2µÄÖµ¡£
3.2 ±àд³ÌÐò£¬ÔËÐкóÓû§ÊäÈë4λÕûÊý×÷ΪÄê·Ý£¬ÅÐ¶ÏÆäÊÇ·ñΪÈòÄê¡£Èç¹ûÄê·ÝÄܱ»400Õû³ý£¬ÔòΪÈòÄꣻÈç¹ûÄê·ÝÄܱ»4Õû³ýµ«²»Äܱ»100Õû³ýҲΪÈòÄê¡£
´ð£º
1£©Python 3.4.2´úÂë
x = input('Please input an integer of 4 digits meaning the year:') x = eval(x)
if x@0==0 or (x%4==0 and not x0==0): print('Yes') else:
print('No')
2£©Python 2.7.8´úÂë
x = input('Please input an integer of 4 digits meaning the year:') if x@0==0 or (x%4==0 and not x0==0): print 'Yes' else:
print 'No'
3.3 ±àд³ÌÐò£¬Éú³ÉÒ»¸ö°üº¬50¸öËæ»úÕûÊýµÄÁÐ±í£¬È»ºóɾ³ýÆäÖÐËùÓÐÆæÊý¡££¨Ìáʾ£º´ÓºóÏòǰɾ¡££©
´ð£º
1£©Python 3.4.2´úÂë
import random
x = [random.randint(0,100) for i in range(50)] print(x) i = len(x)-1 while i>=0:
if x[i]%2==1:
del x[i] i-=1 print(x)
2£©Python 2.7.8´úÂë
°ÑÉÏÃæµÄ´úÂëÖеÚÈýÐкÍ×îºóÒ»ÐиÄΪprint x¼´¿É¡£
34 ±àд³ÌÐò£¬Éú³ÉÒ»¸ö°üº¬20¸öËæ»úÕûÊýµÄÁÐ±í£¬È»ºó¶ÔÆäÖÐżÊýϱêµÄÔªËØ½øÐнµÐòÅÅÁУ¬ÆæÊýϱêµÄÔªËØ²»±ä¡££¨Ìáʾ£ºÊ¹ÓÃÇÐÆ¬¡££©
´ð£º
1£©Python 3.4.2´úÂë
import random
x = [random.randint(0,100) for i in range(20)] print(x) y = x[::2]
y.sort(reverse=True) x[::2] = y print(x)
2£©Python 2.7.8´úÂë
°ÑÉÏÃæµÄ´úÂëÖеÚÈýÐкÍ×îºóÒ»ÐиÄΪprint x¼´¿É¡£
35 ±àд³ÌÐò£¬Óû§´Ó¼üÅÌÊäÈëСÓÚ1000µÄÕûÊý£¬¶ÔÆä½øÐÐÒòʽ·Ö½â¡£ÀýÈ磬10=2¡Á5£¬60=2¡Á2¡Á3¡Á5¡£
´ð£º
1£©Python 3.4.2´úÂë
x = input('Please input an integer less than 1000:') x = eval('x') t = x i = 2
result = [] while True: if t==1: break if t%i==0:
result.append(i) t = t/i else:
i+=1
Print x,'=','*'.join(map(str,result))
2£©Python 2.7.8´úÂë
x = input('Please input an integer less than 1000:') t = x i = 2
result = [] while True: if t==1: break if t%i==0:
result.append(i) t = t/i else:
i+=1
print x,'=','*'.join(map(str,result))
3.6 ±àд³ÌÐò£¬ÖÁÉÙʹÓÃ2ÖÖ²»Í¬µÄ·½·¨¼ÆËã100ÒÔÄÚËùÓÐÆæÊýµÄºÍ¡£
´ð£ºPython 3.4.2´úÂëÈçÏ£¬Èç¹ûʹÓÃPython 2.7.8Ö»ÐèÒª°ÑÆäÖеÄprint()º¯Êý¸ÄΪprintÓï¾ä¼´¿É¡£
x = [i for i in range(1,100) if i%2==1] print(sum(x))
print(sum(range(1,100)[::2]))
3.7 ±àд³ÌÐò£¬ÊµÏֶַκ¯Êý¼ÆË㣬ÈçϱíËùʾ¡£
x x<0 0<=x<5 5<=x<10 10<=x<20 20<=x y 0 x 3x-5 0.5x-2 0 ´ð£ºPython 3.4.2´úÂëÈçÏ£¬Èç¹ûʹÓÃPython 2.7.8Ö»ÐèÒª°ÑÆäÖеÄprint()º¯Êý¸ÄΪprintÓï¾ä¼´¿É¡£
x = input('Please input x:') x = eval(x)
if x<0 or x>=20: print(0) elif 0<=x<5: print(x) elif 5<=x<10: print(3*x-5) elif 10<=x<20: print(0.5*x-2)
µÚ4Õ ×Ö·û´®ÓëÕýÔò±í´ïʽ
4.1 ¼ÙÉèÓÐÒ»¶ÎÓ¢ÎÄ£¬ÆäÖÐÓе¥¶ÀµÄ×Öĸ¡°I¡±ÎóдΪ¡°i¡±£¬Çë±àд³ÌÐò½øÐоÀÕý¡£ ´ð£ºÕâÀï¸ø³öPython 3.4.2´úÂ룬Èç¹ûʹÓÃPython 2.7.8µÄ»°Ö»ÐèÒªÐÞ¸ÄÆäÖеÄprint()º¯ÊýΪprintÓï¾ä¼´¿É¡£
1£©²»Ê¹ÓÃÕýÔò±í´ïʽ
x = \x = x.replace('i ','I ') x = x.replace(' i ',' I ') print(x)
2£©Ê¹ÓÃÕýÔò±í´ïʽ
x = \import re
pattern = re.compile(r'(?:[^\\w]|\\b)i(?:[^\\w])') while True:
result = pattern.search(x) if result:
if result.start(0) != 0:
x = x[:result.start(0)+1]+'I'+x[result.end(0)-1:] else:
x = x[:result.start(0)]+'I'+x[result.end(0)-1:] else:
break print(x)
4.2 ¼ÙÉèÓÐÒ»¶ÎÓ¢ÎÄ£¬ÆäÖÐÓе¥´ÊÖмäµÄ×Öĸ¡°i¡±ÎóдΪ¡°I¡±£¬Çë±àд³ÌÐò½øÐоÀÕý¡£ ´ð£ºÕâÀï¸ø³öPython 3.4.2´úÂ룬Èç¹ûʹÓÃPython 2.7.8µÄ»°Ö»ÐèÒªÐÞ¸ÄÆäÖеÄprint()º¯ÊýΪprintÓï¾ä¼´¿É¡£
import re
x = \print(x)
pattern = re.compile(r'(?:[\\w])I(?:[\\w])') while True:
result = pattern.search(x) if result:
if result.start(0) != 0:
x = x[:result.start(0)+1]+'i'+x[result.end(0)-1:] else:
x = x[:result.start(0)]+'i'+x[result.end(0)-1:] else:
break print(x)
4.3 ÓÐÒ»¶ÎÓ¢ÎÄÎı¾£¬ÆäÖÐÓе¥´ÊÁ¬ÐøÖظ´ÁË2´Î£¬±àд³ÌÐò¼ì²éÖØ¸´µÄµ¥´Ê²¢Ö»±£ÁôÒ»¸ö¡£ÀýÈçÎı¾ÄÚÈÝΪ¡°This is is a desk.¡±£¬³ÌÐòÊä³öΪ¡°This is a desk.¡±
´ð£ºÕâÀï¸ø³öPython 3.4.2´úÂ룬Èç¹ûʹÓÃPython 2.7.8µÄ»°Ö»ÐèÒªÐÞ¸ÄÆäÖеÄprint()º¯ÊýΪprintÓï¾ä¼´¿É¡£
1£©·½·¨Ò»
import re
x = 'This is a a desk.'
pattern = re.compile(r'\\b(\\w+)(\\s+\\1){1,}\\b') matchResult = pattern.search(x)
x = pattern.sub(matchResult.group(1),x) print(x) 2£©·½·¨¶þ
x = 'This is a a desk.'
pattern = re.compile(r'(?P
x = x.replace(matchResult.group(0),matchResult.group(1))
4.4 ¼òµ¥½âÊÍPythonµÄ×Ö·û´®×¤Áô»úÖÆ¡£ ´ð£º
PythonÖ§³Ö×Ö·û´®×¤Áô»úÖÆ£¬¼´£º¶ÔÓÚ¶Ì×Ö·û´®£¬½«Æä¸³Öµ¸ø¶à¸ö²»Í¬µÄ¶ÔÏóʱ£¬ÄÚ´æÖÐÖ»ÓÐÒ»¸ö¸±±¾£¬¶à¸ö¶ÔÏó¹²Ïí¸Ã¸±±¾¡£ÕâÒ»µã²»ÊÊÓÃÓÚ³¤×Ö·û´®£¬¼´³¤×Ö·û´®²»×ñÊØ×¤Áô»úÖÆ£¬ÏÂÃæµÄ´úÂëÑÝʾÁ˶Ì×Ö·û´®ºÍ³¤×Ö·û´®ÔÚÕâ·½ÃæµÄÇø±ð¡£ >>> a = '1234' >>> b = '1234' >>> id(a) == id(b) True
>>> a = '1234'*50 >>> b = '1234'*50 >>> id(a) == id(b) False
4.5 ±àд³ÌÐò£¬Óû§ÊäÈëÒ»¶ÎÓ¢ÎÄ£¬È»ºóÊä³öÕâ¶ÎÓ¢ÎÄÖÐËùÓ㤶ÈΪ3¸ö×ÖĸµÄµ¥´Ê¡£ ´ð£ºÕâÀï¸ø³öPython 3.4.2´úÂ룬Èç¹ûʹÓÃPython 2.7.8µÄ»°Ö»ÐèÒªÐÞ¸ÄÆäÖеÄprint()º¯ÊýΪprintÓï¾ä¼´¿É¡£
import re
x = input('Please input a string:')
pattern = re.compile(r'\\b[a-zA-Z]{3}\\b') print(pattern.findall(x))
µÚ5Õ º¯ÊýÉè¼ÆÓëʹÓÃ
5.1 ÔËÐÐ5.3.1С½Ú×îºóµÄʾÀý´úÂ룬²é¿´½á¹û²¢·ÖÎöÔÒò¡£
´ð£ºÔÒòÊǶÔÓÚº¯ÊýµÄĬÈÏÖµ²ÎÊýÖ»»á±»´¦ÀíÒ»´Î£¬Ï´ÎÔÙµ÷Óú¯Êý²¢ÇÒ²»ÎªÄ¬ÈÏÖµ²ÎÊý¸³ÖµÊ±»á¼ÌÐøÊ¹ÓÃÉÏÒ»´ÎµÄ½á¹û£¬¶ÔÓÚÁбíÕâÑùµÄ½á¹¹£¬Èç¹ûµ÷Óú¯ÊýʱΪĬÈÏÖµ²ÎÊýµÄÁбí²åÈë»òɾ³ýÁËÔªËØ£¬½«»áµÃµ½±£Áô£¬´Ó¶øÓ°ÏìÏÂÒ»´Îµ÷Óá£
5.2 ±àдº¯Êý£¬ÅжÏÒ»¸öÕûÊýÊÇ·ñÎªËØÊý£¬²¢±àдÖ÷³ÌÐòµ÷Óøú¯Êý¡£
´ð£ºÕâÀï¸ø³öPython 3.4.2´úÂ룬Èç¹ûʹÓÃPython 2.7.8µÄ»°Ö»ÐèÒªÐÞ¸ÄÆäÖеÄprint()º¯ÊýΪprintÓï¾ä¼´¿É¡£ import math def IsPrime(v):
n = int(math.sqrt(v)+1) for i in range(2,n): if v%i==0: return 'No' else:
return 'Yes' print(IsPrime(37)) print(IsPrime(60)) print(IsPrime(113))
5.3 ±àдº¯Êý£¬½ÓÊÕÒ»¸ö×Ö·û´®£¬·Ö±ðͳ¼Æ´óд×Öĸ¡¢Ð¡Ð´×Öĸ¡¢Êý×Ö¡¢ÆäËû×Ö·ûµÄ¸öÊý£¬²¢ÒÔÔª×éµÄÐÎʽ·µ»Ø½á¹û¡£
´ð£ºÕâÀï¸ø³öPython 3.4.2´úÂ룬Èç¹ûʹÓÃPython 2.7.8µÄ»°Ö»ÐèÒªÐÞ¸ÄÆäÖеÄprint()º¯ÊýΪprintÓï¾ä¼´¿É¡£
def demo(v):
capital = little = digit = other =0 for i in v:
if 'A'<=i<='Z': capital+=1 elif 'a'<=i<='z': little+=1 elif '0'<=i<='9': digit+=1 else:
other+=1
return (capital,little,digit,other) x = 'capital = little = digit = other =0'
print(demo(x))
5.4 ÔÚPython³ÌÐòÖУ¬¾Ö²¿±äÁ¿»áÒþ²ØÍ¬ÃûµÄÈ«¾Ö±äÁ¿Âð£¿Çë±àд´úÂë½øÐÐÑéÖ¤¡£ ´ð°¸£º»á¡£ >>> def demo(): a=3 print a >>> a=5 >>> demo() 3 >>> a 5
5.5 ±àдº¯Êý£¬¿ÉÒÔ½ÓÊÕÈÎÒâ¶à¸öÕûÊý²¢Êä³öÆäÖеÄ×î´óÖµºÍËùÓÐÕûÊýÖ®ºÍ¡£ ´ð£ºÕâÀï¸ø³öPython 3.4.2´úÂ룬Èç¹ûʹÓÃPython 2.7.8µÄ»°Ö»ÐèÒªÐÞ¸ÄÆäÖеÄprint()º¯ÊýΪprintÓï¾ä¼´¿É¡£ def demo(*v): print(v)
print(max(v)) print(sum(v)) demo(1,2,3) demo(1,2,3,4) demo(1,2,3,4,5)
5.6 ±àдº¯Êý£¬Ä£ÄâÄÚÖú¯Êýsum()¡£
´ð£ºÕâÀï¸ø³öPython 3.4.2´úÂ룬Èç¹ûʹÓÃPython 2.7.8µÄ»°Ö»ÐèÒªÐÞ¸ÄÆäÖеÄprint()º¯ÊýΪprintÓï¾ä¼´¿É¡£ def Sum(v): s = 0 for i in v: s += i return s x = [1,2,3,4,5] print(Sum(x)) x = (1,2,3,4,5) print(Sum(x))
5.7 ±àдº¯Êý£¬Ä£ÄâÄÚÖú¯Êýsorted()¡£
´ð£ºÕâÀï¸ø³öPython 3.4.2´úÂ룬Èç¹ûʹÓÃPython 2.7.8µÄ»°Ö»ÐèÒªÐÞ¸ÄÆäÖеÄprint()º¯ÊýΪprintÓï¾ä¼´¿É¡£ def Sorted(v): t = v[::] r = [] while t:
tt = min(t) r.append(tt) t.remove(tt) return r
x = [1,3,5,2,1,0,9,7] print(x)
print(Sorted(x))
µÚ6ÕÂ ÃæÏò¶ÔÏó³ÌÐòÉè¼Æ
6.1 ¼Ì³Ð6.5½ÚÀý2ÖеÄPersonÀàÉú³ÉStudentÀ࣬Ìîдеĺ¯ÊýÓÃÀ´ÉèÖÃѧÉúרҵ£¬È»ºóÉú³É¸ÃÀà¶ÔÏó²¢ÏÔʾÐÅÏ¢¡£
´ð£ºPython 3.4.2´úÂëΪ
import types
class Person(object): #»ùÀà±ØÐë¼Ì³ÐÓÚobject£¬·ñÔòÔÚÅÉÉúÀàÖн«ÎÞ·¨Ê¹ÓÃsuper()º¯Êý def __init__(self, name = '', age = 20, sex = 'man'): self.setName(name) self.setAge(age) self.setSex(sex) def setName(self, name):
if not isinstance(name,str):
print('name must be string.') return
self.__name = name def setAge(self, age):
if not isinstance(age,int):
print('age must be integer.') return
self.__age = age def setSex(self, sex):
if sex != 'man' and sex != 'woman':
print('sex must be \ return
self.__sex = sex def show(self):
print(self.__name) print(self.__age) print(self.__sex) class Student(Person):
def __init__(self, name='', age = 30, sex = 'man', major = 'Computer'): #µ÷ÓûùÀ๹Ôì·½·¨³õʼ»¯»ùÀàµÄ˽ÓÐÊý¾Ý³ÉÔ± super(Student, self).__init__(name, age, sex)
self.setMajor(major) #³õʼ»¯ÅÉÉúÀàµÄÊý¾Ý³ÉÔ± def setMajor(self, major):
if not isinstance(major, str):
print('major must be a string.') return
self.__major = major def show(self):
super(Student, self).show()
print(self.__major) if __name__ =='__main__':
zhangsan = Person('Zhang San', 19, 'man') zhangsan.show()
lisi = Student('Li Si',32, 'man', 'Math') lisi.show()
6.2 Éè¼ÆÒ»¸öÈýάÏòÁ¿À࣬²¢ÊµÏÖÏòÁ¿µÄ¼Ó·¨¡¢¼õ·¨ÒÔ¼°ÏòÁ¿Óë±êÁ¿µÄ³Ë·¨ºÍ³ý·¨ÔËËã¡£ ´ð£ºPython 3.4.2´úÂëÈçÏ class Vecter3:
def __init__(self, x=0, y=0, z=0): self.X = x self.Y = y self.Z = z
def __add__(self, n): r = Vecter3()
r.X = self.X + n.X r.Y = self.Y + n.Y r.Z = self.Z + n.Z return r
def __sub__(self, n): r = Vecter3() r.X = self.X - n.X r.Y = self.Y - n.Y r.Z = self.Z - n.Z return r
def __mul__(self, n): r = Vecter3() r.X = self.X * n r.Y = self.Y * n r.Z = self.Z * n return r
def __truediv__(self, n): r = Vecter3() r.X = self.X / n r.Y = self.Y / n r.Z = self.Z / n return r
def __floordiv__(self, n): r = Vecter3() r.X = self.X // n r.Y = self.Y // n r.Z = self.Z // n
return r def show(self):
print((self.X,self.Y,self.Z)) v1 = Vecter3(1,2,3) v2 = Vecter3(4,5,6) v3 = v1+v2 v3.show() v4 = v1-v2 v4.show() v5 = v1*3 v5.show() v6 = v1/2 v6.show()
6.3 ÃæÏò¶ÔÏó³ÌÐòÉè¼ÆµÄÈýÒªËØ·Ö±ðΪ ·â×° ¡¢ ¼Ì³Ð ºÍ ¶à̬ ¡£ 6.4 ¼òµ¥½âÊÍPythonÖÐÒÔÏ»®Ïß¿ªÍ·µÄ±äÁ¿ÃûÌØµã¡£ ´ð£º
ÔÚPythonÖУ¬ÒÔÏ»®Ïß¿ªÍ·µÄ±äÁ¿ÃûÓÐÌØÊâµÄº¬Ò壬ÓÈÆäÊÇÔÚÀàµÄ¶¨ÒåÖС£ÓÃÏ»®Ïß×÷Ϊ±äÁ¿Ç°×ººÍºó׺À´±íʾÀàµÄÌØÊâ³ÉÔ±£º
? _xxx£ºÕâÑùµÄ¶ÔÏó½Ð×ö±£»¤±äÁ¿£¬²»ÄÜÓÃ'from module import *'µ¼È룬ֻÓÐÀà¶ÔÏóºÍ×ÓÀà¶ÔÏóÄÜ·ÃÎÊÕâЩ±äÁ¿£»
? __xxx__£ºÏµÍ³¶¨ÒåµÄÌØÊâ³ÉÔ±Ãû×Ö£»
? __xxx£ºÀàÖеÄ˽ÓгÉÔ±£¬Ö»ÓÐÀà¶ÔÏó×Ô¼ºÄÜ·ÃÎÊ£¬×ÓÀà¶ÔÏóÒ²²»ÄÜ·ÃÎʵ½Õâ¸ö³ÉÔ±£¬µ«ÔÚ¶ÔÏóÍⲿ¿ÉÒÔͨ¹ý¡°¶ÔÏóÃû._ÀàÃû__xxx¡±ÕâÑùµÄÌØÊⷽʽÀ´·ÃÎÊ¡£PythonÖÐûÓд¿´âµÄC++ÒâÒåÉϵÄ˽ÓгÉÔ±¡£
6.5 ÓëÔËËã·û¡°**¡±¶ÔÓ¦µÄÌØÊâ·½·¨ÃûΪ __pow__() £¬ÓëÔËËã·û¡°//¡±¶ÔÓ¦µÄÌØÊâ·½·¨ÃûΪ __floordiv__() ¡£
µÚ7Õ Îļþ²Ù×÷
7.1 ¼ÙÉèÓÐÒ»¸öÓ¢ÎÄÎı¾Îļþ£¬±àд³ÌÐò¶ÁÈ¡ÆäÄÚÈÝ£¬²¢½«ÆäÖеĴóд×Öĸ±äΪСд×Öĸ£¬Ð¡Ð´×Öĸ±äΪ´óд×Öĸ¡£
´ð£º
f = open(r'd:\\1.txt','r') s = f.readlines() f.close()
r = [i.swapcase() for i in s]
f = open(r'd:\\2.txt','w') f.writelines(r) f.close()
7.2 ±àд³ÌÐò£¬½«°üº¬Ñ§Éú³É¼¨µÄ×ֵ䱣´æÎª¶þ½øÖÆÎļþ£¬È»ºóÔÙ¶ÁÈ¡ÄÚÈݲ¢ÏÔʾ¡£ ´ð£ºPython 3.4.2´úÂë import pickle
d = {'ÕÅÈý':98,'ÀîËÄ':90,'ÍõÎå':100} print(d)
f = open('score.dat','wb') pickle.dump(1,f) pickle.dump(d,f) f.close
f = open('score.dat','rb') pickle.load(f) d = pickle.load(f) f.close() print(d)
7.3 ʹÓÃshutilÄ£¿éÖеÄmove()·½·¨½øÐÐÎļþÒÆ¶¯¡£ ´ð£º
>>> import shutil
>>> shutil.move(r'd:\\1.txt', r'e:\\1.txt') 'e:\\\\1.txt'
7.4 ¼òµ¥½âÊÍÎı¾ÎļþÓë¶þ½øÖÆÎļþµÄÇø±ð¡£ ´ð£º
£¨1£©Îı¾Îļþ
Îı¾Îļþ´æ´¢µÄÊdz£¹æ×Ö·û´®£¬ÓÉÈô¸ÉÎı¾ÐÐ×é³É£¬Í¨³£Ã¿ÐÐÒÔ»»Ðзû'\\n'½áβ¡£³£¹æ×Ö·û´®ÊÇÖ¸¼Çʱ¾»òÆäËûÎı¾±à¼Æ÷ÄÜÕý³£ÏÔʾ¡¢±à¼²¢ÇÒÈËÀàÄܹ»Ö±½ÓÔĶÁºÍÀí½âµÄ×Ö·û´®£¬ÈçÓ¢ÎÄ×Öĸ¡¢ºº×Ö¡¢Êý×Ö×Ö·û´®¡£Îı¾Îļþ¿ÉÒÔʹÓÃ×Ö´¦ÀíÈí¼þÈçgedit¡¢¼Çʱ¾½øÐб༡£
£¨2£©¶þ½øÖÆÎļþ
¶þ½øÖÆÎļþ°Ñ¶ÔÏóÄÚÈÝÒÔ×Ö½Ú´®(bytes)½øÐд洢£¬ÎÞ·¨ÓüÇʱ¾»òÆäËûÆÕͨ×Ö´¦ÀíÈí¼þÖ±½Ó½øÐб༣¬Í¨³£Ò²ÎÞ·¨±»ÈËÀàÖ±½ÓÔĶÁºÍÀí½â£¬ÐèҪʹÓÃרÃŵÄÈí¼þ½øÐнâÂëºó¶ÁÈ¡¡¢ÏÔʾ¡¢Ð޸ĻòÖ´ÐС£³£¼ûµÄÈçͼÐÎͼÏñÎļþ¡¢ÒôÊÓÆµÎļþ¡¢¿ÉÖ´ÐÐÎļþ¡¢×ÊÔ´Îļþ¡¢¸÷ÖÖÊý¾Ý¿âÎļþ¡¢¸÷ÀàofficeÎĵµµÈ¶¼ÊôÓÚ¶þ½øÖÆÎļþ¡£
7.5 ±àд´úÂ룬½«µ±Ç°¹¤×÷Ŀ¼ÐÞ¸ÄΪ¡°c:\\¡±£¬²¢ÑéÖ¤£¬×îºó½«µ±Ç°¹¤×÷Ŀ¼»Ö¸´ÎªÔÀ´µÄĿ¼¡£
´ð£º
>>> import os >>> os.getcwd() 'C:\\\\Python34'
>>> os.chdir(r'c:\\\\') >>> os.getcwd() 'c:\\\\'
>>> os.chdir(r'c:\\Python34') >>> os.getcwd() 'c:\\\\Python34'
7.6 ±àд³ÌÐò£¬Óû§ÊäÈëÒ»¸öĿ¼ºÍÒ»¸öÎļþÃû£¬ËÑË÷¸ÃĿ¼¼°Æä×ÓĿ¼ÖÐÊÇ·ñ´æÔÚ¸ÃÎļþ¡£
´ð£º
1£©Python 3.4.2´úÂë import sys import os
directory = sys.argv[1] filename = sys.argv[2] paths = os.walk(directory) for root,dirs,files in paths: if filename in files: print('Yes')
break else:
print('No')
2£©Python 2.7.8´úÂë import sys import os
directory = sys.argv[1] filename = sys.argv[2] paths = os.walk(directory) for root,dirs,files in paths: if filename in files: print 'Yes' break else:
print 'No'
µÚ8Õ Òì³£´¦Àí½á¹¹Óë³ÌÐòµ÷ÊÔ
8.1 PythonÒì³£´¦Àí½á¹¹ÓÐÄļ¸ÖÖÐÎʽ£¿ ´ð£º
±È½Ï³£ÓõÄÐÎʽÓУº 1£©±ê×¼Òì³£´¦Àí½á¹¹
try: try¿é #±»¼à¿ØµÄÓï¾ä£¬¿ÉÄÜ»áÒý·¢Òì³£ except Exception[, reason]: except¿é #´¦ÀíÒì³£µÄ´úÂë
Èç¹ûÐèÒª²¶»ñËùÓÐÒ쳣ʱ£¬¿ÉÒÔʹÓÃBaseException£¬´úÂë¸ñʽÈçÏ£º try: ¡¡
except BaseException, e: except¿é #´¦ÀíËùÓдíÎó
ÉÏÃæµÄ½á¹¹¿ÉÒÔ²¶»ñËùÓÐÒì³££¬¾¡¹ÜÕâÑù×öºÜ°²È«£¬µ«ÊÇÒ»°ã²¢²»½¨ÒéÕâÑù×ö¡£¶ÔÓÚÒì³£´¦Àí½á¹¹£¬Ò»°ãµÄ½¨ÒéÊǾ¡Á¿ÏÔʽ²¶×½¿ÉÄÜ»á³öÏÖµÄÒì³£²¢ÇÒÓÐÕë¶ÔÐԵرàд´úÂë½øÐд¦Àí£¬ÒòΪÔÚʵ¼ÊÓ¦Óÿª·¢ÖУ¬ºÜÄÑʹÓÃͬһ¶Î´úÂëÈ¥´¦ÀíËùÓÐÀàÐ͵ÄÒì³£¡£µ±È»£¬ÎªÁ˱ÜÃâÒÅ©ûÓеõ½´¦ÀíµÄÒì³£¸ÉÈųÌÐòµÄÕý³£Ö´ÐУ¬ÔÚ²¶×½ÁËËùÓпÉÄÜÏëµ½µÄÒì³£Ö®ºó£¬ÄúÒ²¿ÉÒÔʹÓÃÒì³£´¦Àí½á¹¹µÄ×îºóÒ»¸öexceptÀ´²¶×½BaseException¡£
2£©ÁíÍâÒ»ÖÖ³£ÓõÄÒì³£´¦Àí½á¹¹ÊÇtry...except...else...Óï¾ä¡£
3£©ÔÚʵ¼Ê¿ª·¢ÖУ¬Í¬Ò»¶Î´úÂë¿ÉÄÜ»áÅ׳ö¶à¸öÒì³££¬ÐèÒªÕë¶Ô²»Í¬µÄÒì³£ÀàÐͽøÐÐÏàÓ¦µÄ´¦Àí¡£ÎªÁËÖ§³Ö¶à¸öÒì³£µÄ²¶×½ºÍ´¦Àí£¬PythonÌṩÁË´øÓжà¸öexceptµÄÒì³£´¦Àí½á¹¹£¬ÕâÀàËÆÓÚ¶à·ÖÖ§Ñ¡Ôñ½á¹¹£¬Ò»µ©Ä³¸öexcept²¶»ñÁËÒì³££¬ÔòºóÃæÊ£ÓàµÄexcept×Ӿ佫²»»áÔÙÖ´ÐС£Ó﷨Ϊ£º try: try¿é except Exception1: except¿é1 except Exception2: except¿é2
#±»¼à¿ØµÄÓï¾ä
#´¦ÀíÒì³£1µÄÓï¾ä #´¦ÀíÒì³£2µÄÓï¾ä
4£©½«Òª²¶»ñµÄÒ쳣дÔÚÒ»¸öÔª×éÖУ¬¿ÉÒÔʹÓÃÒ»¸öexceptÓï¾ä²¶»ñ¶à¸öÒì³££¬²¢ÇÒ¹²ÓÃͬһ¶ÎÒì³£´¦Àí´úÂ룬µ±È»£¬³ý·ÇÈ·¶¨Òª²¶»ñµÄ¶à¸öÒì³£¿ÉÒÔʹÓÃͬһ¶Î´úÂëÀ´´¦Àí£¬²¢
²»½¨ÒéÕâÑù×ö¡£
5£©×îºóÒ»ÖÖ³£ÓõÄÒì³£´¦Àí½á¹¹ÊÇtry...except...finally...½á¹¹¡£ÔڸýṹÖУ¬finally×Ó¾äÖеÄÄÚ´æÎÞÂÛÊÇ·ñ·¢ÉúÒì³£¶¼»áÖ´ÐУ¬³£ÓÃÀ´×öһЩÇåÀí¹¤×÷ÒÔÊÍ·Åtry×Ó¾äÖÐÉêÇëµÄ×ÊÔ´¡£Óï·¨ÈçÏ£º try: ¡¡ finally:
......
#ÎÞÂÛÈçºÎ¶¼»áÖ´ÐеĴúÂë
8.2 Òì³£ºÍ´íÎóÓÐÊ²Ã´Çø±ð£¿ ´ð£º
Òì³£ÊÇÖ¸ÒòΪ³ÌÐòÖ´Ðйý³ÌÖгö´í¶øÔÚÕý³£¿ØÖÆÁ÷ÒÔÍâ²ÉÈ¡µÄÐÐΪ¡£ÑϸñÀ´Ëµ£¬Óï·¨´íÎóºÍÂß¼´íÎó²»ÊôÓÚÒì³££¬µ«ÓÐЩÓï·¨´íÎóÍùÍù»áµ¼ÖÂÒì³££¬ÀýÈçÓÉÓÚ´óСдƴд´íÎó¶ø·ÃÎʲ»´æÔڵĶÔÏ󣬻òÕßÊÔͼ·ÃÎʲ»´æÔÚµÄÎļþ£¬µÈµÈ¡£
8.3 ʹÓÃpdbÄ£¿é½øÐÐPython³ÌÐòµ÷ÊÔÖ÷ÒªÓÐÄļ¸ÖÖÓ÷¨£¿ ´ð£ºÖ÷ÒªÓÐÈýÖÖ·½Ê½£¬
1£©ÔÚ½»»¥Ä£Ê½ÏÂʹÓÃpdbÄ£¿éÌṩµÄ¹¦ÄÜ¿ÉÒÔÖ±½Óµ÷ÊÔÓï¾ä¿é¡¢±í´ïʽ¡¢º¯ÊýµÈ¶àÖֽű¾¡£
2£©ÔÚ³ÌÐòÖÐǶÈë¶ÏµãÀ´ÊµÏÖµ÷ÊÔ¹¦ÄÜ
ÔÚ³ÌÐòÖÐÊ×Ïȵ¼ÈëpdbÄ£¿é£¬È»ºóʹÓÃpdb.set_trace()ÔÚÐèÒªµÄλÖÃÉèÖöϵ㡣Èç¹û³ÌÐòÖдæÔÚͨ¹ý¸Ã·½·¨µ÷ÓÃÏÔʽ²åÈëµÄ¶Ïµã£¬ÄÇôÔÚÃüÁîÌáʾ·û»·¾³ÏÂÖ´ÐиóÌÐò»òË«»÷Ö´ÐгÌÐòʱ½«×Ô¶¯´ò¿ªpdbµ÷ÊÔ»·¾³£¬¼´Ê¹¸Ã³ÌÐòµ±Ç°²»´¦ÓÚµ÷ÊÔ״̬¡£
3£©Ê¹ÓÃÃüÁîÐе÷ÊÔ³ÌÐò
ÔÚÃüÁîÐÐÌáʾ·ûÏÂÖ´ÐС°python ¨Cm pdb ½Å±¾ÎļþÃû¡±£¬ÔòÖ±½Ó½øÈëµ÷ÊÔ»·¾³£»µ±µ÷ÊÔ½áÊø»ò³ÌÐòÕý³£½áÊøÒÔºó£¬pdb½«ÖØÆô¸Ã³ÌÐò¡£
8.4 PythonÄÚ½¨Òì³£ÀàµÄ»ùÀàÊÇ BaseException ¡£ 8.5 ¶ÏÑÔÓï¾äµÄÓ﷨Ϊ assert ¡£ 8.6 PythonÉÏÏÂÎĹÜÀíÓï¾äÊÇ with ¡£
µÚ9Õ GUI±à³Ì
9.1 Éè¼ÆÒ»¸ö´°Ì壬²¢·ÅÖÃÒ»¸ö°´Å¥£¬µ¥»÷°´Å¥ºóµ¯³öÑÕÉ«¶Ô»°¿ò£¬¹Ø±ÕÑÕÉ«¶Ô»°¿òºóÌáʾѡÖеÄÑÕÉ«¡£
´ð£ºPython 2.7.8´úÂëÈçÏ£¬
import wx
class wxGUI(wx.App): def OnInit(self):
frame = wx.Frame(parent=None, title='wxGUI', size=(160,140)) panel = wx.Panel(frame, -1)
buttonOK = wx.Button(panel, -1, 'OK', pos=(0,0))
self.Bind(wx.EVT_BUTTON, self.OnButtonOK, buttonOK)
frame.Show() return True
def OnButtonOK(self, event):
colorDlg = wx.ColourDialog(None) colorDlg.ShowModal()
color = colorDlg.GetColourData().Colour wx.MessageBox(str(color))
app = wxGUI() app.MainLoop()
9.2 Éè¼ÆÒ»¸ö´°Ì壬²¢·ÅÖÃÒ»¸ö°´Å¥£¬°´Å¥Ä¬ÈÏÎı¾Îª¡°¿ªÊ¼¡±£¬µ¥»÷°´Å¥ºóÎı¾±äΪ¡°½áÊø¡±£¬Ôٴε¥»÷ºó±äΪ¡°¿ªÊ¼¡±£¬Ñ»·Çл»¡£
´ð£ºPython 2.7.8´úÂëÈçÏ£¬
import wx
class wxGUI(wx.App): def OnInit(self):
frame = wx.Frame(parent=None, title='wxGUI', size=(160,140)) panel = wx.Panel(frame, -1)
self.buttonOK = wx.Button(panel, -1, 'Start', pos=(0,0))
self.Bind(wx.EVT_BUTTON, self.OnButtonOK, self.buttonOK)
frame.Show() return True
def OnButtonOK(self, event):
text = self.buttonOK.GetLabelText()
if text == 'Start':
self.buttonOK.SetLabelText('End') elif text == 'End':
self.buttonOK.SetLabelText('Start')
app = wxGUI() app.MainLoop()
9.3 Éè¼ÆÒ»¸ö´°Ì壬ģÄâQQµÇ¼½çÃæ£¬µ±Óû§ÊäÈëºÅÂë123456ºÍÃÜÂë654321ʱÌáʾÕýÈ·£¬·ñÔòÌáʾ´íÎó¡£
´ð£ºPython 2.7.8´úÂëÈçÏ£¬
import wx
class wxGUI(wx.App): def OnInit(self):
frame = wx.Frame(parent=None, title='Login', size=(250,150), pos=(350,350)) panel = wx.Panel(frame, -1)
label1 = wx.StaticText(panel, -1, 'UserName:', pos=(0,10), style=wx.ALIGN_RIGHT) label2 = wx.StaticText(panel, -1, 'Password:', pos=(0,30), style=wx.ALIGN_RIGHT)
self.textName = wx.TextCtrl(panel, -1, pos=(70,10), size=(160,20)) self.textPwd = wx.TextCtrl(panel, -1, pos=(70,30), size=(160,20),style=wx.TE_PASSWORD)
buttonOK = wx.Button(panel, -1, 'OK', pos=(30,60))
self.Bind(wx.EVT_BUTTON, self.OnButtonOK, buttonOK) buttonCancel = wx.Button(panel, -1, 'Cancel', pos=(120,60))
self.Bind(wx.EVT_BUTTON, self.OnButtonCancel, buttonCancel) buttonOK.SetDefault()
frame.Show() return True
def OnButtonOK(self, event):
usrName = self.textName.GetValue() usrPwd = self.textPwd.GetValue()
if usrName=='123456' and usrPwd=='654321': wx.MessageBox('Right') else:
wx.MessageBox('Wrong') def OnButtonCancel(self, event): pass app = wxGUI() app.MainLoop()
µÚ10ÕÂ ÍøÂç³ÌÐòÉè¼Æ
10.1 ¼òµ¥½âÊÍTCPºÍUDPÐÒéµÄÇø±ð¡£ ´ð£º
TCPÐÒéÊÇÃæÏòÁ¬½ÓµÄ¡¢¾ßÓÐÖÊÁ¿±£Ö¤µÄ¿É¿¿´«ÊäÐÒ飬µ«¿ªÏú½Ï´ó£»UDPÐÒéÊǾ¡×î´óÄÜÁ¦´«ÊäµÄÎÞÁ¬½ÓÐÒ飬¿ªÏúС£¬³£ÓÃÓÚÊÓÆµÔÚÏߵ㲥£¨Video On Demand, VOD£©Ö®ÀàµÄÓ¦Óá£TCPÐÒéºÍUDPÐÒ鲢ûÓÐÓÅÁÓÖ®·Ö£¬½ö½öÊÇÊÊÓó¡ºÏÓÐËù²»Í¬¡£
10.2 ͬѧ֮¼äºÏ×÷±àдUDPͨÐųÌÐò£¬·Ö±ð±àд·¢ËͶ˺ͽÓÊÕ¶Ë´úÂ룬·¢ËͶ˷¢ËÍÒ»¸ö×Ö·û´®¡°Hello world!¡±¡£¼ÙÉè½ÓÊÕ¶ËÔÚ¼ÆËã»úµÄ5000¶Ë¿Ú½øÐнÓÊÕ£¬²¢ÏÔʾ½ÓÊÕÄÚÈÝ¡£
´ð£ºÊ×ÏÈʹÓÃipconfig/allÃüÁî²é¿´±¾»úIPµØÖ·£¬È»ºó·Ö±ð±àдÏÂÃæµÄ´úÂ룬²¢½«ÆäÖеÄIPµØÖ·Ì滻ΪÏàÓ¦µÄIPµØÖ·¡£
½ÓÊÕ¶Ë´úÂ룺
import socket
s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.bind((\ #¿Õ×Ö·û´®±íʾ±¾»úÈκοÉÓÃIPµØÖ· data, addr=s.recvfrom(1024) # »º³åÇø´óСΪ1024×Ö½Ú print ' received message:%s' % data #ÏÔʾ½ÓÊÕµ½µÄÄÚÈÝ s.close( )
·¢ËͶ˴úÂ룺
import socket
s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.sendto(\¼ÙÉè10.20.52.248ÊǽÓÊÕ¶ËÖ÷»úµÄIPµØÖ· s.close( )
10.3 ¼òµ¥½éÉÜsocketÄ£¿éÖÐÓÃÓÚTCP±à³ÌµÄ³£Ó÷½·¨¡£
TCPÒ»°ãÓÃÓÚÒªÇó¿É¿¿Êý¾Ý´«ÊäµÄ³¡ºÏ¡£±àдTCP³ÌÐòʱ¾³£ÐèÒªÓõ½µÄsocketÄ£¿é·½·¨Ö÷ÒªÓУº
? ? ? ? ? ?
connect(address)£ºÁ¬½ÓÔ¶³Ì¼ÆËã»ú send(bytes[,flags])£º·¢ËÍÊý¾Ý recv(bufsize[,flags])£º½ÓÊÕÊý¾Ý bind(address)£º°ó¶¨µØÖ·
listen(backlog)£º¿ªÊ¼¼àÌý£¬µÈ´ý¿Í»§¶ËÁ¬½Ó accept()£ºÏìÓ¦¿Í»§¶ËµÄÇëÇó
10.4 ±àд´úÂë¶ÁÈ¡ËѺüÍøÒ³Ê×Ò³ÄÚÈÝ¡£
´ð£º
>>> import urllib.request >>> dir(urllib.request)
>>> fp = urllib.request.urlopen('http://www.sohu.com.cn') >>> dir(fp)
>>> print(fp.read(100)) >>> fp.close()
10.5 ÔÚ×Ô¼ºµÄ»úÆ÷ÉÏÅäÖÃIISÒÔÖ§³ÖPython½Å±¾µÄÔËÐУ¬È»ºóʹÓÃPython±àд½Å±¾£¬ÔËÐкóÔÚÍøÒ³ÉÏÏÔʾ¡°Hello world!¡±¡£
´ð£ººËÐÄ´úÂëΪ
print 'Status: 200 OK'
print 'Content-type: text/html' print
print '
print '
Hello world!' print '
'
print ''
µÚ11Õ ´óÊý¾Ý´¦Àí
11.1 ¼òµ¥½éÉܳ£¼ûµÄ´óÊý¾Ý´¦Àí¿ò¼Ü¡£ ´ð£ºÖ÷ÒªÓÐÈýÖÖ£¬
? MapReduce£º·Ö²¼Ê½¼ÆËã¿ò¼Ü£¬¿ÉÒÔ½«µ¥¸ö´óÐͼÆËã×÷Òµ·ÖÅ䏸¶ą̀¼ÆËã»úÖ´ÐУ¬¿ÉÒÔÔÚ¶Ìʱ¼äÄÚÍê³É´óÁ¿¹¤×÷£¬ÓÈÆäÊʺÏÊýÖµÐÍºÍ±ê³ÆÐÍÊý¾Ý£¬µ«ÐèÒª¶ÔÐÐÒµÁìÓò¾ßÓÐÒ»¶¨Àí½âºóÖØÐ´Ëã·¨À´Íê³ÉÌØ¶¨µÄÒµÎñ´¦ÀíÒªÇó¡£MapReduceµÄÃû×ÖÓɺ¯Êýʽ±à³ÌÖг£ÓõÄmapºÍreduceÁ½¸öµ¥´Ê×é³É¡£MapReduceÔÚ´óÁ¿½Úµã×é³ÉµÄ¼¯ÈºÉÏÔËÐУ¬¹¤×÷Á÷³ÌÊÇ£ºµ¥¸ö×÷Òµ±»·Ö³ÉºÜ¶àС·Ý£¬ÊäÈëÊý¾ÝÒ²±»ÇÐÆ¬²¢·Ö·¢µ½Ã¿¸ö½Úµã£¬Ã¿¸ö½ÚµãÖ»ÔÚ±¾µØÊý¾ÝÉÏ×öÔËË㣬¶ÔÓ¦µÄÔËËã´úÂë³ÆÎªmapper£¬Õâ¸ö¹ý³Ì¼´map½×¶Î£»Ã¿¸ömapperµÄÊä³öͨ¹ýijÖÖ·½Ê½×éºÏ£¬¸ù¾ÝÐèÒª¿ÉÄÜÔÙ½øÐÐÖØÐÂÅÅÐò£¬ÅÅÐòºóµÄ½á¹ûÔÙ±»ÇзֳÉС·Ý²¢·Ö·¢µ½¸÷¸ö½Úµã½øÐÐÏÂÒ»²½´¦Àí£¬Õâ¸ö¹ý³Ì±»³ÆÎªreduce½×¶Î£¬¶ÔÓ¦µÄ´úÂë³ÆÎªreducer¡£²»Í¬ÀàÐ͵Ä×÷Òµ¿ÉÄÜÐèÒª²»Í¬ÊýÁ¿µÄreducer£¬²¢ÇÒ£¬ÔÚÈκÎʱºò£¬Ã¿¸ömapper»òreducerÖ®¼ä¶¼²»½øÐÐͨÐÅ£¬Ã¿¸ö½ÚµãÖ»¸ºÔð´¦Àí×Ô¼ºµÄÊÂÎñ£¬²¢ÇÒÖ»ÔÚ·ÖÅäµ½±¾µØµÄÊý¾Ý¼¯ÉϽøÐÐÔËËã¡£
? Hadoop£ºHadoopÊÇMapReduce¿ò¼ÜµÄÒ»¸öÃâ·Ñ¿ªÔ´ÊµÏÖ£¬²ÉÓÃJavaÓïÑÔ±àд£¬Ö§³ÖÔÚ´óÁ¿»úÆ÷ÉÏ·Ö²¼Ê½´¦ÀíÊý¾Ý¡£³ýÁË·Ö²¼Ê½¼ÆËãÖ®Í⣬Hadoop»¹×Ô´ø·Ö²¼Ê½Îļþϵͳ£¬¿ÉÒÔÔÚÉÏÃæÔËÐжàÖÖ²»Í¬ÓïÑÔ±àдµÄ·Ö²¼Ê½³ÌÐò¡£HadoopÔÚ¿ÉÉìËõÐÔ¡¢½¡×³ÐÔ¡¢¼ÆËãÐÔÄܺͳɱ¾ÉϾßÓÐÎÞ¿ÉÌæ´úµÄÓÅÊÆ£¬ÊÂʵÉÏÒѳÉΪµ±Ç°»¥ÁªÍøÆóÒµÖ÷Á÷µÄ´óÊý¾Ý·ÖÎöƽ̨¡£
? Spark£ºSparkÊÇÒ»¸öÕë¶Ô³¬´óÊý¾Ý¼¯ºÏµÄµÍÑÓ³Ù¼¯Èº·Ö²¼Ê½¼ÆËãϵͳ£¬±ÈMapReduce¿ì40±¶×óÓÒ¡£SparkÊÇHadoopµÄÉý¼¶°æ±¾£¬¼æÈÝHadoopµÄAPI£¬Äܹ»¶ÁдHadoopµÄHDFS HBASE ˳ÐòÎļþµÈ£¬ÓëÖ®²»Í¬µÄÊǽ«½á¹û±£´æÔÚÄÚ´æÖС£ Hadoop×÷ΪµÚÒ»´ú²úƷʹÓÃÁËHDFS£¬µÚ¶þ´ú¼ÓÈëÁËCacheÀ´±£´æÖÐ¼ä¼ÆËã½á¹û£¬µÚÈý´úÔòÊÇSpark³«µ¼µÄÁ÷¼¼ÊõStreaming¡£
11.2 ÔËÐб¾ÕÂÖдúÂë²¢Àí½âMapReduce±à³Ì˼·¡£ ´ð£ºÂÔ
µÚ12Õ Windowsϵͳ±à³Ì
12.1 ²éÔÄÏà¹Ø×ÊÁÏ£¬½âÊÍ×¢²á±í¼¸´ó¸ù¼üµÄÓÃ;¡£ ´ð£ºÂÔ
12.2 Ñ¡ÔñÒ»¸ö±àдºÃµÄPython³ÌÐò£¬½«Æäת»»Îªexe¿ÉÖ´ÐÐÎļþ¡£ ´ð£ºÂÔ£¬Çë²Î¿¼ÊéÖÐÏà¹Ø½éÉÜ¡£
12.3 ±àд´úÂ룬ʹÓÃÖÁÉÙ3Öв»Í¬µÄ·½·¨Æô¶¯Windows×Ô´øµÄ¼ÆËãÆ÷³ÌÐò¡£ ´ð£º µÚÒ»ÖÖ·½·¨£º >>> import os
>>> os.system('calc.exe')
µÚ¶þÖÖ·½·¨£º >>> import os
>>> os.popen('calc.exe')
µÚÈýÖÖ·½·¨£º >>> import os
>>> os.startfile('calc.exe')
µÚËÄÖÖ·½·¨£º
>>> import win32api
>>> win32api.ShellExecute(0, 'open', 'calc.exe', '', '', 1)
µÚÎåÖÖ·½·¨£º
>>> import win32process >>> handle=win32process.CreateProcess(r'c:\\windows\\system32\\calc.exe','', None,None,0, win32process.CREATE_NO_WINDOW, None, None,win32process.STARTUPINFO())
12.4 ±àд´úÂ룬¼ì²âÄúËùʹÓõIJÙ×÷ϵͳ°æ±¾¡£ ´ð£ºÂÔ£¬Çë²Î¿¼12.5½Ú¡£
µÚ13Õ ¶àÏ̱߳à³Ì
13.1 ¼òµ¥ÐðÊö´´½¨Ï̵߳ķ½·¨¡£ ´ð£º
ThreadÀàÖ§³ÖʹÓÃÁ½ÖÖ·½·¨À´´´½¨Ị̈߳¬Ò»ÖÖÊÇΪ¹¹Ô캯Êý´«µÝÒ»¸ö¿Éµ÷ÓöÔÏó£¬ÁíÒ»ÖÖÊǼ̳ÐThreadÀಢÔÚÅÉÉúÀàÖÐÖØÐ´__init__()ºÍrun()·½·¨¡£´´½¨ÁËÏ̶߳ÔÏóÒԺ󣬿ÉÒÔµ÷ÓÃÆästart()·½·¨À´Æô¶¯£¬¸Ã·½·¨×Ô¶¯µ÷ÓøÃÀà¶ÔÏóµÄrun()·½·¨£¬´Ëʱ¸ÃÏ̴߳¦ÓÚalive״̬£¬Ö±ÖÁÏ̵߳Ärun()·½·¨ÔËÐнáÊø¡£
13.2 ¼òµ¥ÐðÊöThread¶ÔÏóµÄ·½·¨¡£ ´ð£º
£¨1£©join([timeout]£º×èÈûµ±Ç°Ị̈߳¬µÈ´ý±»µ÷Ï߳̽áÊø»ò³¬Ê±ºóÔÙ¼ÌÐøÖ´Ðе±Ç°Ï̵߳ĺóÐø´úÂ룬²ÎÊýtimeoutÓÃÀ´Ö¸¶¨×µÈ´ýʱ¼ä£¬µ¥Î»ÎªÃë¡£
£¨2£©isAlive()£º²âÊÔÏß³ÌÊÇ·ñ´¦ÓÚÔËÐÐ״̬
£¨3£©start()£º×Ô¶¯µ÷ÓÃrun()·½·¨£¬Æô¶¯Ị̈߳¬Ö´ÐÐÏ̴߳úÂë¡£
£¨4£©run()£ºÏ̴߳úÂ룬ÓÃÀ´ÊµÏÖÏ̵߳ŦÄÜÓëÒµÎñÂß¼£¬¿ÉÒÔÔÚ×ÓÀàÖÐÖØÐ´¸Ã·½·¨À´×Ô¶¨ÒåÏ̵߳ÄÐÐΪ¡£
13.3 ¼òµ¥ÐðÊöÏ̶߳ÔÏóµÄdaemonÊôÐÔµÄ×÷ÓúÍÓ°Ïì¡£ ´ð£º
Ôڽű¾ÔËÐйý³ÌÖÐÓÐÒ»¸öÖ÷Ị̈߳¬ÈôÔÚÖ÷Ïß³ÌÖд´½¨ÁË×ÓỊ̈߳¬µ±Ö÷Ï߳̽áÊøÊ±¸ù¾Ý×ÓÏß³ÌdaemonÊôÐÔÖµµÄ²»Í¬¿ÉÄܻᷢÉúÏÂÃæµÄÁ½ÖÖÇé¿öÖ®Ò»£º1£©µ±Ä³×ÓÏ̵߳ÄdaemonÊôÐÔΪFalseʱ£¬Ö÷Ï߳̽áÊøÊ±»á¼ì²â¸Ã×ÓÏß³ÌÊÇ·ñ½áÊø£¬Èç¹û¸Ã×ÓÏß³ÌÉÐδÍê³É£¬ÔòÖ÷Ï̻߳áµÈ´ýËüÍê³ÉºóÔÙÍ˳ö£»2£©µ±Ä³×ÓÏ̵߳ÄdaemonÊôÐÔΪTrueʱ£¬Ö÷Ïß³ÌÔËÐнáÊøÊ±²»¶Ô¸Ã×ÓÏ߳̽øÐмì²é¶øÖ±½ÓÍ˳ö£¬Í¬Ê±ËùÓÐdaemonֵΪTrueµÄ×ÓÏ߳̽«ËæÖ÷Ïß³ÌÒ»Æð½áÊø£¬¶ø²»ÂÛÊÇ·ñÔËÐÐÍê³É¡£daemonÊôÐÔµÄֵĬÈÏΪFalse£¬Èç¹ûÐèÒªÐ޸ģ¬Ôò±ØÐëÔÚµ÷ÓÃstart()·½·¨Æô¶¯Ïß³Ì֮ǰ½øÐÐÐ޸ġ£
13.4 ½âÊÍÖÁÉÙ3ÖÖÏß³Ìͬ²½·½·¨¡£ ´ð£º
£¨1£©Ê¹ÓÃCondition¶ÔÏó¿ÉÒÔÔÚijЩʼþ´¥·¢ºó²Å´¦ÀíÊý¾Ý£¬¿ÉÒÔÓÃÓÚ²»Í¬Ïß³ÌÖ®¼äµÄͨÐÅ»ò֪ͨ£¬ÒÔʵÏÖ¸ü¸ß¼¶±ðµÄͬ²½¡£Condition¶ÔÏó³ýÁ˾ßÓÐacquire()ºÍrelease()·½·¨Ö®Í⣬
»¹ÓÐwait()¡¢notify()¡¢notify_all()µÈ·½·¨¡£ÏÂÃæÍ¨¹ý¾µäÉú²úÕß/Ïû·ÑÕßÎÊÌâÀ´ÑÝʾCondition¶ÔÏóµÄÓ÷¨¡£
£¨2£©QueueÄ£¿é£¨ÔÚPython 3ÖÐΪqueueÄ£¿é£©ÊµÏÖÁ˶àÉú²úÕß/¶àÏû·ÑÕß¶ÓÁУ¬ÓÈÆäÊʺÏÐèÒªÔÚ¶à¸öÏß³ÌÖ®¼ä½øÐÐÐÅÏ¢½»»»µÄ³¡ºÏ£¬¸ÃÄ£¿éµÄQueue¶ÔÏóʵÏÖÁ˶àÏ̱߳à³ÌËùÐèÒªµÄËùÓÐËøÓïÒå¡£
£¨3£©Event¶ÔÏóÊÇÒ»ÖÖ¼òµ¥µÄÏß³ÌͨÐż¼Êõ£¬Ò»¸öÏß³ÌÉèÖÃEvent¶ÔÏó£¬ÁíÒ»¸öÏ̵߳ȴýEvent¶ÔÏó¡£Event¶ÔÏóµÄset()·½·¨¿ÉÒÔÉèÖÃEvent¶ÔÏóÄÚ²¿µÄÐźűêÖ¾ÎªÕæ£»clear()·½·¨¿ÉÒÔÇå³ýEvent¶ÔÏóÄÚ²¿µÄÐźűêÖ¾£¬½«ÆäÉèÖÃΪ¼Ù£»isSet()·½·¨ÓÃÀ´ÅÐ¶ÏÆäÄÚ²¿ÐźűêÖ¾µÄ״̬£»wait()·½·¨Ö»ÓÐÔÚÆäÄÚ²¿ÐźÅ×´Ì¬ÎªÕæÊ±½«ºÜ¿ìµØÖ´Ðв¢·µ»Ø£¬ÈôEvent¶ÔÏóµÄÄÚ²¿Ðźűê־Ϊ¼Ù£¬wait()·½·¨½«Ò»Ö±µÈ´ýÖÁ³¬Ê±»òÄÚ²¿ÐźÅ×´Ì¬ÎªÕæ¡£
µÚ14Õ Êý¾Ý¿â±à³Ì
14.1 ¼òµ¥½éÉÜSQLiteÊý¾Ý¿â¡£ ´ð£º
SQLiteÊÇÄÚǶÔÚPythonÖеÄÇáÁ¿¼¶¡¢»ùÓÚ´ÅÅÌÎļþµÄÊý¾Ý¿â¹ÜÀíϵͳ£¬²»ÐèÒª·þÎñÆ÷½ø³Ì£¬Ö§³ÖʹÓÃSQLÓï¾äÀ´·ÃÎÊÊý¾Ý¿â¡£¸ÃÊý¾Ý¿âʹÓÃCÓïÑÔ¿ª·¢£¬Ö§³Ö´ó¶àÊýSQL91±ê×¼£¬Ö§³ÖÔ×ӵġ¢Ò»Öµġ¢¶ÀÁ¢µÄºÍ³Ö¾ÃµÄÊÂÎñ£¬²»Ö§³ÖÍâ¼üÏÞÖÆ£»Í¨¹ýÊý¾Ý¿â¼¶µÄ¶ÀÕ¼ÐԺ͹²ÏíËø¶¨À´ÊµÏÖ¶ÀÁ¢ÊÂÎñ£¬µ±¶à¸öÏß³Ìͬʱ·ÃÎÊͬһ¸öÊý¾Ý¿â²¢ÊÔͼдÈëÊý¾Ýʱ£¬Ã¿Ò»Ê±¿ÌÖ»ÓÐÒ»¸öÏ߳̿ÉÒÔдÈëÊý¾Ý¡£SQLiteÖ§³Ö2TB´óСµÄµ¥¸öÊý¾Ý¿â£¬Ã¿¸öÊý¾Ý¿âÍêÈ«´æ´¢ÔÚµ¥¸ö´ÅÅÌÎļþÖУ¬ÒÔB+Ê÷Êý¾Ý½á¹¹µÄÐÎʽ´æ´¢£¬Ò»¸öÊý¾Ý¿â¾ÍÊÇÒ»¸öÎļþ£¬Í¨¹ý¼òµ¥¸´ÖƼ´¿ÉʵÏÖÊý¾Ý¿âµÄ±¸·Ý¡£
14.2 ʹÓÃPythonÄÚÖú¯Êýdir()²é¿´Cursor¶ÔÏóÖеķ½·¨£¬²¢Ê¹ÓÃÄÚÖú¯Êýhelp()²é¿´ÆäÓ÷¨¡£
´ð£ºÂÔ¡£
14.3 ÐðÊöʹÓÃPython²Ù×÷AccessÊý¾Ý¿âµÄ²½Öè¡£ ´ð£º
£¨1£©½¨Á¢Êý¾Ý¿âÁ¬½Ó
import win32com.client
conn = win32com.client.Dispatch(r'ADODB.Connection')
DSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=C:/MyDB.mdb;' conn.Open(DSN)
£¨2£©´ò¿ª¼Ç¼¼¯
rs = win32com.client.Dispatch(r'ADODB.Recordset') rs_name = 'MyRecordset' #±íÃû rs.Open('[' + rs_name + ']', conn, 1, 3)
£¨3£©²Ù×÷¼Ç¼¼¯
rs.AddNew()
rs.Fields.Item(1).Value = 'data' rs.Update()
£¨4£©²Ù×÷Êý¾Ý
conn = win32com.client.Dispatch(r'ADODB.Connection')
DSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=C:/MyDB.mdb;'
sql_statement = \ conn.Open(DSN)
conn.Execute(sql_statement) conn.Close()
£¨5£©±éÀú¼Ç¼
rs.MoveFirst() count = 0 while 1:
if rs.EOF: break else:
count = count + 1 rs.MoveNext()
14.4 ÐðÊöʹÓÃPython²Ù×÷MS SQL ServerÊý¾Ý¿âµÄ²½Öè¡£ ´ð£º
¿ÉÒÔʹÓÃpywin32ºÍpymssqlÁ½ÖÖ²»Í¬µÄ·½Ê½À´·ÃÎÊMS SQL ServerÊý¾Ý¿â¡£ ÏÈÀ´Á˽âÒ»ÏÂpywin32Ä£¿é·ÃÎÊMS SQL ServerÊý¾Ý¿âµÄ²½Öè¡£ £¨1£©Ìí¼ÓÒýÓÃ:
import adodbapi
adodbapi.adodbapi.verbose = False # adds details to the sample printout import adodbapi.ado_consts as adc
£¨2£©´´½¨Á¬½Ó:
Cfg = {'server':'192.168.29.86\\\\eclexpress','password':'xxxx','db':'pscitemp'}
constr = r\Initial Catalog=%s; Data Source=%s; user ID=%s; Password=%s; \conn = adodbapi.connect(constr)
£¨3£©Ö´ÐÐsqlÓï¾ä:
cur = conn.cursor()
sql = '''select * from softextBook where title='{0}' and remark3!='{1}''''.format(bookName,flag) cur.execute(sql) data = cur.fetchall() cur.close()
£¨4£©Ö´Ðд洢¹ý³Ì:
#¼ÙÉèproNameÓÐÈý¸ö²ÎÊý,×îºóÒ»¸ö²ÎÊý´«ÁËnull
ret = cur.callproc('procName',(parm1,parm2,None)) conn.commit()
£¨5£©¹Ø±ÕÁ¬½Ó conn.close()
½ÓÏÂÀ´ÔÙͨ¹ýÒ»¸öʾÀýÀ´¼òµ¥Á˽âÒ»ÏÂʹÓÃpymssqlÄ£¿é·ÃÎÊMS SQL ServerÊý¾Ý¿âµÄ·½·¨¡£
import pymssql
conn = pymssql.connect(host='SQL01', user='user', password='password', database='mydatabase') cur = conn.cursor()
cur.execute('CREATE TABLE persons(id INT, name VARCHAR(100))')
cur.executemany(\ALUES(%d, xinos.king)\Doe') ])
conn.commit()
cur.execute('SELECT * FROM persons WHERE salesrep=xinos.king', 'John Doe') row = cur.fetchone() while row:
print \ row = cur.fetchone()
cur.execute(\ conn.close()
14.5 ÐðÊöMySQLDbÄ£¿éÌṩµÄÊý¾Ý¿â·ÃÎÊ·½·¨¡£ ´ð£º
Python·ÃÎÊMySQLÊý¾Ý¿â¿ÉÒÔʹÓÃMySQLDbÄ£¿é£¬¸ÃÄ£¿éÖ÷Òª·½·¨ÓУº ? commit() £ºÌá½»ÊÂÎñ¡£ ? rollback() £º»Ø¹öÊÂÎñ¡£
? callproc(self, procname, args)£ºÓÃÀ´Ö´Ðд洢¹ý³Ì£¬½ÓÊյIJÎÊýΪ´æ´¢¹ý³ÌÃûºÍ²ÎÊýÁÐ±í£¬·µ»ØÖµÎªÊÜÓ°ÏìµÄÐÐÊý¡£
? execute(self, query, args)£ºÖ´Ðе¥ÌõsqlÓï¾ä£¬½ÓÊյIJÎÊýΪsqlÓï¾ä±¾ÉíºÍʹÓõIJÎÊýÁÐ±í£¬·µ»ØÖµÎªÊÜÓ°ÏìµÄÐÐÊý¡£
? executemany(self, query, args)£ºÖ´Ðе¥ÌõsqlÓï¾ä£¬µ«ÊÇÖØ¸´Ö´ÐвÎÊýÁбíÀïµÄ²ÎÊý£¬·µ»ØÖµÎªÊÜÓ°ÏìµÄÐÐÊý¡£
? nextset(self)£ºÒƶ¯µ½ÏÂÒ»¸ö½á¹û¼¯¡£ ? fetchall(self)£º½ÓÊÕÈ«²¿µÄ·µ»Ø½á¹ûÐС£
? fetchmany(self, size=None)£º½ÓÊÕsizeÌõ·µ»Ø½á¹ûÐУ¬Èç¹ûsizeµÄÖµ´óÓÚ·µ»ØµÄ½á¹ûÐеÄÊýÁ¿£¬Ôò»á·µ»Øcursor.arraysizeÌõÊý¾Ý¡£
? fetchone(self)£º·µ»ØÒ»Ìõ½á¹ûÐС£
? scroll(self, value, mode='relative')£ºÒƶ¯Ö¸Õ뵽ijһÐУ¬Èç¹ûmode='relative'£¬Ôò±íʾ´Óµ±Ç°ËùÔÚÐÐÒÆ¶¯valueÌõ£»Èç¹û mode='absolute'£¬Ôò±íʾ´Ó½á¹û¼¯µÄµÚÒ»ÐÐÒÆ¶¯valueÌõ¡£
µÚ15Õ ¶àýÌå±à³Ì
15.1 ±à³Ì³ÌÐò£¬ÔÚ´°¿ÚÉÏ»æÖÆÒ»¸öÈý½ÇÐΣ¬ÉèÖÃÈý¸ö¶¥µãΪ²»Í¬µÄÑÕÉ«£¬²¢¶ÔÄÚ²¿½øÐй⻬×ÅÉ«¡£
´ð£º
from OpenGL.GL import * from OpenGL.GLUT import * from OpenGL.GLU import * import sys
class MyPyOpenGLTest:
def __init__(self, width = 640, height = 480, title = 'MyPyOpenGLTest'): glutInit(sys.argv)
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH) glutInitWindowSize(width, height) self.window = glutCreateWindow(title) glutDisplayFunc(self.Draw) glutIdleFunc(self.Draw) self.InitGL(width, height)
#default drawing function def Draw(self):
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) glLoadIdentity()
glTranslatef(-2.0, 0.0, -8.0)
#draw 2D graphic, leaving z to be 0 glBegin(GL_POLYGON) glColor3f(1.0, 0.0, 0.0) glVertex3f(0.0, 1.0, 0.0) glColor3f(0.0, 1.0, 0.0) glVertex3f(1.0, -1.0, 0.0) glColor3f(0.0, 0.0, 1.0) glVertex3f(-1.0, -1.0, 0.0) glEnd()
glTranslatef(2.5, 0.0, 0.0)
glutSwapBuffers()
def InitGL(self, width, height): glClearColor(0.0, 0.0, 0.0, 0.0) glClearDepth(1.0)
glDepthFunc(GL_LESS)
glShadeModel(GL_SMOOTH) glEnable(GL_POINT_SMOOTH) glEnable(GL_LINE_SMOOTH)
glEnable(GL_POLYGON_SMOOTH) glMatrixMode(GL_PROJECTION)
glHint(GL_POINT_SMOOTH_HINT,GL_NICEST) glHint(GL_LINE_SMOOTH_HINT,GL_NICEST)
glHint(GL_POLYGON_SMOOTH_HINT,GL_FASTEST) glLoadIdentity()
gluPerspective(45.0, float(width)/float(height), 0.1, 100.0) glMatrixMode(GL_MODELVIEW) def MainLoop(self): glutMainLoop()
if __name__ == '__main__': w = MyPyOpenGLTest() w.MainLoop()
15.2 ±àд³ÌÐò£¬¶ÁÈ¡Á½·ù´óСһÑùµÄͼƬ£¬È»ºó½«Á½·ùͼÏñµÄÄÚÈݵþ¼Óµ½Ò»·ùͼÏñ£¬½á¹ûͼÏñÖÐÿ¸öÏñËØÖµÎªÔÁ½·ùͼÏñ¶ÔӦλÖÃÏñËØÖµµÄƽ¾ùÖµ¡£
´ð£º
from PIL import Image
im1 = Image.open('d:\\\\pic1.bmp') im2 = Image.open('d:\\\\pic2.bmp') size = im1.size
for i in range(size[0]): for j in range(size[1]):
color1 = im1.getpixel((i,j)) color2 = im2.getpixel((i,j)) r = (color1[0]+color2[0])//2 g = (color1[1]+color2[1])//2 b = (color1[2]+color2[2])//2 im1.putpixel((i,j),(r,g,b))
im1.save('d:\\\\pic3.bmp') im1.close() im2.close()
15.3 ±àд³ÌÐò£¬¶Áȡһ·ùͼÏñµÄÄÚÈÝ£¬½«Æä°´ÏóÏÞ·ÖΪ4µÈ·Ý£¬È»ºó1¡¢3ÏóÏÞÄÚÈݽ»»»£¬2¡¢4ÏóÏÞÄÚÈݽ»»»£¬Éú³ÉÒ»·ùÐÂͼÏñ¡£
´ð£º
from PIL import Image
im = Image.open('d:\\\\pic1.bmp') im2 = Image.open('d:\\\\pic1.bmp') size = im.size
box1 = (0, size[1]/2, size[0]/2, size[1]) region1 = im.crop(box1)
box2 = (0, 0, size[0]/2, size[1]/2) region2 = im.crop(box2)
box3 = (size[0]/2, 0, size[0], size[1]/2) region3 = im.crop(box3)
box4 = (size[0]/2, size[1]/2, size[0], size[1]) region4 = im.crop(box4)
im2.paste(region1, box3) im2.paste(region3, box1) im2.paste(region2, box4) im2.paste(region4, box2)
im2.save('d:\\\\pic4.bmp') im.close() im2.close()
15.4 ½áºÏGUI±à³Ì֪ʶ£¬±àдһ¸ö³ÌÐò£¬´´½¨Ò»¸ö´°¿Ú²¢ÔÚÉÏÃæ·ÅÖÃÁ½¸ö°´Å¥£¬·Ö±ðΪ¡°¿ªÊ¼²¥·Å¡±ºÍ¡°ÔÝÍ£²¥·Å¡±£¬½«±¾ÕÂ15.3½ÚÖеÄÒôÀÖ²¥·Å³ÌÐò½øÐзâ×°¡£
´ð£º
import wx import os
import pygame import random import time import threading
class wxGUI(wx.App): def OnInit(self):
frame = wx.Frame(parent=None, title='MP3Player', size=(250,150), pos=(350,350)) panel = wx.Panel(frame, -1)
self.buttonOK = wx.Button(panel, -1, 'Play', pos=(30,60))
self.Bind(wx.EVT_BUTTON, self.OnButtonOK, self.buttonOK)
self.buttonOK.Enabled = True
self.buttonCancel = wx.Button(panel, -1, 'Stop', pos=(120,60))
self.Bind(wx.EVT_BUTTON, self.OnButtonCancel, self.buttonCancel) self.buttonCancel.Enabled = False
frame.Show() return True def OnExit(self): try:
self.playing = False
pygame.mixer.music.stop() finally: pass
def play(self):
folder = r'h:\\music'
musics = [folder+'\\\\'+music for music in os.listdir(folder) if music.endswith('.mp3')] total = len(musics) pygame.mixer.init() while self.playing:
if not pygame.mixer.music.get_busy(): nextMusic = random.choice(musics) pygame.mixer.music.load(nextMusic) pygame.mixer.music.play(1) print 'playing....',nextMusic else:
time.sleep(1)
def OnButtonOK(self, event): self.playing = True
# create a new thread to play music t = threading.Thread(target=self.play) t.start()
self.buttonOK.Enabled = False
self.buttonCancel.Enabled = True
def OnButtonCancel(self, event): self.playing = False
pygame.mixer.music.stop() self.buttonOK.Enabled = True self.buttonCancel.Enabled = False
app = wxGUI()
app.MainLoop()
15.5 ÔËÐб¾ÕÂ15.4ÖеĴúÂë²¢²é¿´ÔËÐнá¹û¡£ ´ð£ºÂÔ¡£
µÚ16ÕÂ ÄæÏò¹¤³ÌÓëÈí¼þ·ÖÎö
16.1 ÏÂÔØPEÎļþ¹æ·¶8.3°æ±¾£¬²¢³¢ÊÔÁ˽âPEÎļþ»ù±¾½á¹¹¡£ ´ð£ºÂÔ¡£
16.2 ÏÂÔØ²¢°²×°IDA ProÓëImmunity Debugger£¬²¢¼òµ¥Á˽âPEÎļþ·´»ã±àºÍµ÷ÊÔ²½Öè¡£
´ð£ºÂÔ¡£
16.3 °²×°²¢ÅäÖÃIDAPython²å¼þ£¬È»ºóÔËÐб¾ÕÂ16.2.1С½ÚµÄPython´úÂë¡£ ´ð£ºÂÔ¡£
16.4 ÔÚImmunity Debuggerµ÷ÊÔÆ÷ÖÐÔËÐб¾ÕÂ16.2.2С½ÚÖеĴúÂë¡£ ´ð£ºÂÔ¡£
16.5 ÐðÊöÈí¼þµ÷ÊԶϵãµÄ¸ÅÄî¡¢×÷Óü°Æä·ÖÀà¡£ ´ð£º
¶ÏµãÊÇ×î³£ÓõÄÈí¼þµ÷ÊÔ¼¼ÊõÖ®Ò»£¬Æä»ù±¾Ë¼ÏëÊÇÔÚijһ¸öλÖÃÉèÖÃÒ»¸ö¡°ÏÝÚ塱£¬µ±CPUÖ´Ðе½Õâ¸öλÖõÄʱºòÍ£Ö¹±»µ÷ÊԵijÌÐò²¢Öжϵ½µ÷ÊÔÆ÷ÖУ¬Èõ÷ÊÔÕß½øÐзÖÎöºÍµ÷ÊÔ£¬µ÷ÊÔÕß·ÖÎö½áÊøºó£¬¿ÉÒÔÈñ»µ÷ÊÔ³ÌÐò»Ö¸´Ö´ÐС£Í¨¹ýÉèÖöϵã¿ÉÒÔÔÝÍ£³ÌÐòÖ´ÐУ¬²¢¿ÉÒÔ¹Û²ìºÍ¼Ç¼ָÁîÐÅÏ¢¡¢±äÁ¿Öµ¡¢¶ÑÕ»²ÎÊýºÍÄÚ´æÊý¾Ý£¬»¹¿ÉÒÔÉîÈëÁ˽âºÍ°ÑÎÕ³ÌÐòÖ´ÐеÄÄÚ²¿ÔÀíºÍÏêϸ¹ý³Ì£¬¶Ïµã¶ÔÓÚÈí¼þµ÷ÊÔ¾ßÓÐÖØÒªµÄÒâÒåºÍ×÷Óá£
¶Ïµã¿ÉÒÔ·ÖΪÈí¼þ¶Ïµã¡¢Ó²¼þ¶ÏµãºÍÄÚ´æ¶ÏµãÈý´óÀà¡£ 1£©Èí¼þ¶Ïµã
Èí¼þ¶ÏµãÊÇÒ»¸öµ¥×Ö½ÚÖ¸ÁINT 3£¬×Ö½ÚÂëΪ0xCC£©£¬¿ÉÒÔÔÚ³ÌÐòÖÐÉèÖöà¸öÈí¼þ¶Ïµã£¬Ê¹µÃ³ÌÐòÖ´Ðе½¸Ã´¦Ê±Äܹ»ÔÝÍ£Ö´ÐУ¬²¢½«¿ØÖÆÈ¨×ªÒƸøµ÷ÊÔÆ÷µÄ¶Ïµã´¦Àíº¯Êý¡£
µ±µ÷ÊÔÆ÷±»¸æÖªÔÚÄ¿±êµØÖ·ÉèÖÃÒ»¸ö¶Ïµã£¬ËüÊ×ÏȶÁȡĿ±êµØÖ·µÄµÚÒ»¸ö×ֽڵIJÙ×÷Â룬Ȼºó±£´æÆðÀ´£¬Í¬Ê±°ÑµØÖ·´æ´¢ÔÚÄÚ²¿µÄÖжÏÁбíÖС£½Ó×Å£¬µ÷ÊÔÆ÷°ÑÒ»¸ö×Ö½Ú²Ù×÷Âë ¡°0xCC¡± дÈë¸Õ²ÅµÄµØÖ·¡£µ± CPU Ö´Ðе½¡°0xCC¡±²Ù×÷ÂëµÄʱºò¾Í»á´¥·¢Ò»¸ö ¡°INT 3¡±ÖжÏʼþ£¬´Ëʱµ÷ÊÔÆ÷¾ÍÄܲ¶×½µ½Õâ¸öʼþ¡£µ÷ÊÔÆ÷¼ÌÐøÅжÏÕâ¸ö·¢ÉúÖжÏʼþµÄµØÖ·(ͨ¹ýÖ¸ÁîÖ¸Õë¼Ä´æÆ÷EIP)ÊDz»ÊÇ×Ô¼ºÏÈǰÉèÖöϵãµÄµØÖ·¡£Èç¹ûÔÚµ÷ÊÔÆ÷ÄÚ²¿µÄ¶ÏµãÁбíÖÐÕÒµ½ÁËÕâ¸öµØÖ·£¬¾Í½«ÉèÖöϵãǰ´æ´¢ÆðÀ´µÄ²Ù×÷Âëд»Øµ½Ä¿±êµØÖ·£¬ÕâÑù½ø³Ì±»µ÷ÊÔÆ÷»Ö¸´ºó¾ÍÄÜÕý³£µÄÖ´ÐС£
2£©Ó²¼þ¶Ïµã
Ó²¼þ¶Ïµãͨ¹ýµ÷ÊԼĴæÆ÷ʵÏÖ£¬ÉèÖÃÔÚCPU¼¶±ðÉÏ£¬µ±ÐèÒªµ÷ÊÔij¸öÖ¸¶¨ÇøÓò¶øÓÖÎÞ·¨Ð޸ĸÃÇøÓòʱ£¬Ó²¼þ¶Ïµã·Ç³£ÓÐÓá£
Ò»¸öCPUÒ»°ã»áÓÐ8 ¸öµ÷ÊԼĴæÆ÷£¨DR0 ¼Ä´æÆ÷µ½DR7¼Ä´æÆ÷£©£¬ÓÃÓÚ¹ÜÀíÓ²¼þ¶Ïµã¡£ÆäÖе÷ÊԼĴæÆ÷DR0µ½µ÷ÊԼĴæÆ÷DR3´æ´¢Ó²¼þ¶ÏµãµØÖ·£¬Í¬Ò»Ê±¼äÄÚ×î¶àÖ»ÄÜÉèÖÃ4¸öÓ²¼þ¶Ïµã£»DR4ºÍDR5±£Áô£¬DR6ÊÇ״̬¼Ä´æÆ÷£¬ËµÃ÷±»¶Ïµã´¥·¢µÄµ÷ÊÔʼþµÄÀàÐÍ£»DR7±¾ÖÊÉÏÊÇÒ»¸öÓ²¼þ¶ÏµãµÄ¿ª¹Ø¼Ä´æÆ÷£¬Í¬Ê±Ò²´æ´¢Á˶ϵãµÄ²»Í¬ÀàÐÍ¡£Í¨¹ýÔÚDR7¼Ä´æÆ÷ÀïÉèÖò»Í¬±êÖ¾£¬Äܹ»´´½¨ÒÔϼ¸Öֶϵ㣺µ±Ìض¨µÄµØÖ·ÉÏÓÐÖ¸ÁîÖ´ÐеÄʱºòÖжϡ¢µ±Ìض¨µÄµØÖ·ÉÏÓÐÊý¾ÝдÈëµÄʱºò¡¢µ±Ìض¨µÄµØÖ·ÉÏÓÐÊý¾Ý¶Á»òÕß䵫²»Ö´ÐеÄʱºò¡£
Ó²¼þ¶ÏµãʹÓá°INT 1¡±ÊµÏÖ£¬¸ÃÖжϸºÔðÓ²¼þÖжϺͲ½½øÊ¼þ¡£²½½øÊÇÖ¸¸ù¾ÝÔ¤¶¨µÄÁ÷³ÌÒ»ÌõÒ»ÌõµØÖ´ÐÐÖ¸ÁÿִÐÐÍêÒ»ÌõÖ¸ÁîºóÔÝÍ£ÏÂÀ´£¬´Ó¶ø¿ÉÒÔ¾«È·µØ¹Û²ì¹Ø¼ü´úÂë²¢¼àÊӼĴæÆ÷ºÍÄÚ´æÊý¾ÝµÄ±ä»¯¡£ÔÚCPUÿ´ÎÖ´ÐдúÂë֮ǰ£¬¶¼»áÏÈÈ·Èϵ±Ç°½«ÒªÖ´ÐдúÂëµÄµØÖ·ÊÇ·ñÊÇÓ²¼þ¶ÏµãµÄµØÖ·£¬Í¬Ê±Ò²ÒªÈ·ÈÏÊÇ·ñÓдúÂëÒª·ÃÎʱ»ÉèÖÃÁËÓ²¼þ¶ÏµãµÄÄÚ´æÇøÓò¡£Èç¹ûÈκδ¢´æÔÚDR0-DR3ÖеĵØÖ·ËùÖ¸ÏòµÄÇøÓò±»·ÃÎÊÁË£¬¾Í»á´¥·¢ ¡°INT 1¡±Öжϣ¬Í¬Ê±ÔÝÍ£CPU£»Èç¹û²»ÊÇÖжϵØÖ·ÔòCPUÖ´ÐиÃÐдúÂ룬µ½ÏÂÒ»ÐдúÂëʱ£¬CPU¼ÌÐøÖØ¸´ÉÏÃæµÄ¹ý³Ì¡£
3£©ÄÚ´æ¶Ïµã
ÄÚ´æ¶ÏµãÊÇͨ¹ýÐÞ¸ÄÄÚ´æÖÐÖ¸¶¨¿é»òÒ³µÄ·ÃÎÊȨÏÞÀ´ÊµÏֵġ£Í¨¹ý½«Ö¸¶¨ÄÚ´æ¿é»òÒ³µÄ·ÃÎÊȨÏÞÊôÐÔÉèÖÃΪÊܱ£»¤µÄ£¬ÔòÈκβ»·ûºÏ·ÃÎÊȨÏÞÔ¼ÊøµÄ²Ù×÷¶¼½«Ê§°Ü£¬²¢Å׳öÒì³££¬µ¼ÖÂCPUÔÝÍ£Ö´ÐУ¬Ê¹µÃµ÷ÊÔÆ÷¿ÉÒԲ鿴µ±Ç°Ö´ÐÐ״̬¡£
Ò»°ãÀ´Ëµ£¬Ã¿¸öÄÚ´æ¿é»òÒ³µÄ·ÃÎÊȨÏÞ¶¼ÓÉÈýÖÖ²»Í¬µÄ·ÃÎÊȨÏÞ×é³É£ºÊÇ·ñ¿ÉÖ´ÐС¢ÊÇ·ñ¿É¶Á¡¢ÊÇ·ñ¿Éд¡£Ã¿¸ö²Ù×÷ϵͳ¶¼ÌṩÁËÓÃÀ´²éѯºÍÐÞ¸ÄÄÚ´æÒ³·ÃÎÊȨÏ޵ĺ¯Êý£¬ÔÚWindows²Ù×÷ϵͳÖпÉÒÔʹÓÃVirtualProtect()º¯ÊýÀ´ÐÞ¸ÄÖ÷µ÷½ø³ÌÐéÄâµØÖ·¿Õ¼äÖÐÒÑÌá½»Ò³ÃæµÄ±£»¤ÊôÐÔ£¬Ê¹ÓÃVirtualProtectEx()º¯Êý¿ÉÒÔÐÞ¸ÄÆäËû½ø³ÌÐéÄâµØÖ·¿Õ¼äÒ³ÃæµÄ±£»¤ÊôÐÔ¡£
16.6 ÔËÐб¾ÕÂ16.4½ÚÖеĴúÂë²¢²é¿´ÔËÐнá¹û¡£ ´ð£ºÂÔ¡£
µÚ17Õ ¿ÆÑ§¼ÆËãÓë¿ÉÊÓ»¯
17.1 ÔËÐб¾ÕÂËùÓдúÂë²¢²é¿´ÔËÐнá¹û¡£ ´ð£ºÂÔ¡£
17.2 ʹÓÃPythonÄÚÖú¯Êýdir()²é¿´scipyÄ£¿éÖеĶÔÏóÓë·½·¨£¬²¢Ê¹ÓÃPythonÄÚÖú¯Êýhelp()²é¿´ÆäʹÓÃ˵Ã÷¡£ ´ð£ºÂÔ¡£