1. 程式人生 > >2018-11-22學習筆記

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),

print

標註:

第一行表示乘法表的行數;

第二行內層迴圈,控制列數的,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'