控制流
阿新 • • 發佈:2017-12-27
控制流、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]
控制流