2018-11-22學習筆記
迴圈是一個結構,導致程式要重複一定的次數。
條件迴圈也是如此,當條件變為假,迴圈結束。
1. 流程控制-for序列
在序列裡,使用for迴圈遍歷。
語法:
for iterating_var in sequence:
statement(s)
字串變數:
i, 抑制換行符在一行顯示。
列表:
range()函式:
range()返回時一個列表;
range可以快速的生成一個序列
range(I, j, [,步進值])
如果所建立物件為整數,可以用range
i為初始值,不選預設為0;j為終止值,但不包括在範圍內;步進值預設為1;
示例:算1+2 +3...+100 的大小
vim 3.py
#! /usr/bin/python
sum = 0
for i in range(1,101):
sum = sum + i
print sum
xrange函式:
xrange()函式用法與range完全相同,所不同的是生成的不是數值列表,而是一個生成器。
xrange()生成的物件只有在遍歷的時候才輸出列表元素,比較節約記憶體資源。
2. 流程控制-for字典
迭代遍歷
遍歷序列:將序列中各個元素取出來。
- 直接從序列取值
- 通過索引取值
注:“迭代”,指重複執行一個命令。
示例:寫一個乘法表
vim 5.py
#! /usr/bin/python
for i in range(1,10):
for j in range(1,i+1):
print "%s*%s=%s" % (j,i,j*i),
標註:
第一行表示乘法表的行數;
第二行內層迴圈,控制列數的,j的取值是1到i+1
第三行表示外層迴圈一次i的值乘以j的值,不換行;
第四行表示內層迴圈結束後列印換行符;
3.迴圈推出
for
else
for迴圈正常結束後,才會執行else語句。
1. 正常迴圈結束測試else
vim 6.py
#! /usr/bin/python
for i in xrange(1,10):
print i
else:
print 'main end'
2. 匯入time模組
#! /usr/bin/python
import time
for i in xrange(1,10):
print i
time.sleep(1)
else:
print 'main end'
一秒中迴圈列印一次
按ctrl + c退出迴圈後else後不執行;
3. break退出迴圈
#! /usr/bin/python
for i in xrange(1,10):
print i
if i == 5:
break
else:
print 'main end'
break退出迴圈else也不執行;
4. continue繼續迴圈,滿足條件的不執行continue後面的操作。
#! /usr/bin/python
for i in xrange(1,10):
if i == 3:
continue
if i == 5:
break
print i
else:
print 'main end'
5. 匯入sys模組sys.exit()退出整個指令碼
import 匯入模組
pass 佔位不執行操作
sys.exit() 退出,後面的print ‘hello’ 都不執行
#! /usr/bin/python
import sys
for i in xrange(1,10):
if i == 3:
continue
elif i == 5:
continue
elif i == 7:
pass
elif i == 8:
sys.exit()
print i
else:
print 'main end'
print 'hello'
練習:
- 系統生成一個20以內的隨機整數,
- 玩家有6此機會進行猜猜看,每次猜測都有反饋(猜大了,猜小了,猜對了-結束)
- 6次中,猜對了,玩家贏了。
- 否則系統贏了。
import random
random.randint(1,20) 在1到20之間隨機生成一個整數,包含1和20;
#! /usr/bin/python
# -*- coding: utf-8 -*-
import os,sys
import random
ran = random.randint(0,20)
for i in xrange(1,7):
num1 = raw_input("please input a number: ")
num2 = int(num1)
if num2 == ran:
print 'you win'
break
else:
if num2 > ran:
print "猜大了"
elif num2 < ran:
print '猜小了'
else:
print 'you lose'
#!/usr/bin/python
import random
import sys
ran=random.randint(1,20)
#for i in xrange(1,7):
for i in xrange(1,7):
while True:
a=raw_input("plese input a num: ")
if not a.isdigit():
continue
else:
break
a = int(a)
if a == ran:
print ('you win!')
break
else:
if a > ran:
print 'too big'
print 'you have '+str(6-i)+' Test'
elif a < ran:
print 'too small'
print 'you have '+str(6-i)+' Test'
else:
print 'you win!'
if i==6:
print 'you lose!'
4. 流程控制while:
while與for相比:
for迴圈用在有次數的迴圈上。
while迴圈用在有條件的控制上。
while迴圈,直到表示式變為假,才退出while迴圈,表示式是一個邏輯表示式,必須返回一個true或false。
語法:
while expression
statement(s)
1.
#! /usr/bin/python
while 1:
print 'hello'
注:while 1: 表示true,所以執行下面的print ‘hello',由於沒有表示式為false,所以一直迴圈下去,處於死迴圈狀態
#! /usr/bin/python
n = 0
while not n == 5:
print 'hello'
n += 1
注;迴圈一次n變為1,迴圈5次後n==5 ,第六次迴圈時n 已經等於5,條件false退出不執行後面迴圈。
2.
#! /usr/bin/python
n = 0
while True:
if n ==5:
break
print 'hello'
n += 1
3.
#! /usr/bin/python
while True:
print 'hello'
a = raw_input("please input something(q exit): ")
if a == 'q':
break
4.
#! /usr/bin/python
a = ''
while a != 'q':
a = raw_input("please input something(q for exit): ")
print 'hello'
注:先給a一個初始值,當鍵盤輸入q時退出迴圈
5.
#! /usr/bin/python
a = ''
while a != 'q':
a = raw_input("please input something(q for exit): ")
print 'hello'
if not a:
break
注:a等於任何非空字串時都是正確的,所以not a 為false;
a 等於空字串時false,not a 為true,所以執行後面break;
else:
while迴圈也支援else,和for迴圈一樣,迴圈正常結束後執行else下內容;
正常結束為遇到假的表示式時退出。
當迴圈中使用break結束或則執行過程總按ctrl c 退出不執行else
#! /usr/bin/python
a = ''
while a != 'q':
a = raw_input("please input something(q for exit): ")
print 'hello'
if not a:
break
else:
print 'main end'