1. 程式人生 > >控制流

控制流

控制流、demo4

# -*- coding:utf-8 -*- #--控制流---------------------------------------------------------------- #---if----- age = 13; if age>=18: print 'adult'; elif 18>age>=6: print 'teenager'; else: print 'kid'; #teenager #可以改造的簡單一些-------------------------- age=3; print 'adult' if age>=18 else('teenager' if 18>age>=6 else 'kid'); #kid #或者利用and,or條件短路 age=6; print(age>=18 and 'adult') or (18>age>=6 and 'teenager') or 'kid'; #teenager ''' 註意條件表達式不能包含復制語句 if(x=1)>0: #此寫法是錯誤得 print '二大爺'; if(x=1)>0: ^ SyntaxError: invalid syntax ''' #-----------if練習----------猜數字---------------------------- number = 23; guess = int(raw_input('請輸入數字:')); if guess==number: print '祝賀你,猜中了'; print '但是沒有獎勵'; elif guess<number: print '小了'; else: print '大了'; print 'done'; #------------循環-------------------------------------------------------------------- #--for---- names = ['Michael','Bob','Tracy']; for name in names: print'name:%s'%name; ''' name:Michael name:Bob name:Tracy ''' #--for x in...循環就是把每個元素帶入變量,然後執行語句 #計算10! sum=0; for x in [1,2,3,4,5,6,7,8,9,10]: sum = sum+x; print 'sum:',sum; #55 #用上述方法較麻煩,所以有range()函數 xrange() sum = 0; for x in range(11): sum = sum+x; print 'sum:',sum; #55 #遍歷i for i in xrange(4): print 'i:',i; ''' i: 0 i: 1 i: 2 i: 3 ''' #----多變量賦值------- for i,j in {'a':1,'b':2}.items(): print i,j; ''' a 1 #i--a j--1 b 2 #i--b j--2 ''' s = ((1,['a','b']),(2,['x','y'])); for i,(c1,c2) in s: #展開,[]和()都可以用 print i,c1,c2; ''' 1 a b #i--1 (c1,c2)--a b 2 x y #i--1 (c1,c2)--a b ''' #for中也可以有else for x in xrange(3): print x; else: print'哈哈'; ''' 0 1 2 哈哈 ''' for x in xrange(2): print x; if x>=1:break; #結束了,不執行else else: print '哈哈' ''' 0 1 ''' #--------用enumerate()返回序列號的for循環,既遍歷索引,又遍歷元素----------------- for i,c in enumerate('abcd'): print 's[{0}]={1}'.format(i,c); ''' s[0]=a s[1]=b s[2]=c s[3]=d format用來格式化字符串,當然可以直接 print i,c 結果是 0 a 1 b 2 c 3 d ''' #當然也可以這樣 ss = 'abc' for i in range(len(ss)): print 's{0}={1}'.format(i,ss[i]); ''' s0=a s1=b s2=c 與上題比較可以看出[]&{}的不同 ''' #------用list來舉例--原理the same------------- list = ['二','大','爺']; #先不用enumerate for i in range(len(list)): print 's[{0}]={1}'.format(i,list[i]); ''' s[0]=二 s[1]=大 s[2]=爺 ''' #現在來用enumerate for index,item in enumerate(list): print 's[{0}={1}]'.format(index,item); #enumerate可以用來指定索引起始值 for index,item in enumerate(list,1): print 's[{0}={1}]'.format(index,item); ''' s[1=二] s[2=大] s[3=爺] ''' ''' enumerate 可以統計文件行數 count = len(open(filepath, 'r').readlines()) 簡單慢文件過大不能工作 這樣 count = 0 for index, line in enumerate(open(filepath,'r')): count += 1 ''' #-------------------------------------------------------------------------- #------while----------- #python的while中有else分支,循環沒中斷,則執行else x=3; while x>0: x-=1 print x; else: print"哈哈!" ''' 2 1 0 哈哈! ''' while True: x+=1 if x>3: break print x; else: print '二大爺!'; ''' 1 2 3 ''' #------下面用while來完成猜數字------------- number = 23; running = True; while running: guess = int(raw_input('請輸入數字:')); if guess == number: print '祝賀你,猜對了'; running = False; #用來結束循環 也可以用break elif guess<number: print '小了,請重猜'; else: print '大了'; else: print '二大爺駕到'; print '遊戲結束'; #------------------------------------------------------ #-----break--- while True: s = raw_input('please entering someing:') if s=='quiet': break; print 'length of the string is:',len(s); print 'over'; ''' please entering someing:i want to length of the string is: 9 please entering someing:you and me length of the string is: 10 please entering someing:quiet over ''' #---補充 range和xrange---------------------- #range(start,end,step)生成序列 print range(3); #[0, 1, 2] print range(1,6,3); #[1, 4] #用法與range相同,不同的是成成不是一個數組,是生成器 print xrange(3); #xrange(3) print list(xrange(3)); #[0, 1, 2] print xrange(0,7,3); # xrange(0, 9, 3) print list(xrange(0,7,3)); #[0, 3, 6] #--二者都用於循環,但是xrange優於range for i in range(0,100): print i; for i in xrange(0,100): print i; #--二者結果一樣都是打印0到100,但是運行過程不一樣 #--range-- a = range(0,100); print type(a); #<type 'list'> print a; #1,2,3,4,5......98,99 print a[0],a[1],a[2],a[3]; #0 1 2 3 接著寫到a[99] #--xrange-- a = xrange(0,100); print type(a); #<type 'xrange'> print a; #xrange(100) print a[0],a[1],a[2],a[3]; #0 1 2 3 接著寫到a[99]


控制流