# Python学习基础知识大全_python3 循环语句

XAMPP教程 134浏览

### python3 循环语句

#### 1. while

``````n=10
sum = 0
counter = 1
while counter < n:
sum = sum + counter
counter += 1
print("1到%d之和为：%d" %(n, sum))

#while 循环使用 else 语句
count = 0
while count < 5:
print (count, " 小于 5")
count = count + 1
else:
print (count, " 大于或等于 5")
``````

#### 2. for

``````#可以使range以指定数字开始并指定不同的增量(甚至可以是负数，有时这也叫做'步长')
for i in range(0, 10, 3):
print(i)

for i in range(-10, -100, -30):
print(i)

a_list = ['google', 'baidu', 'ie', 'firefox', '360']
for i in range(len(a_list)):
print(i, a_list[i])
#使用range创建列表
b_list = list(range(8))
print(b_list)
``````

#### 3. break和continue

``````#使用break终止循环
for letter in 'helloworld':
if letter == 'r':
break
print("当前字母为：", letter)
#使用continue跳过循环
for letter in 'helloworld':
if letter == 'l':
continue
print("当前字母为：", letter)
``````

#### 4. pass语句

``````#说明：pass就是一条空语句。在代码段中或定义函数的时候，如果没有内容，或者先不做任何处理，直接跳过，就可以使用pass。
for letter in 'helloworld':
if letter == 'l':
pass
print("执行pass块")
print("当前字母为：", letter)
``````

#### 5. 使用enumerate函数进行遍历

``````c_list = [12, 34, 56, 78, 90]
for i, j in enumerate(c_list):
print(i, j)
``````

#### 6. 小练习

##### 循环练习
``````for i in range(1, 6):
for j in range(1, i+1):
print('*',end='')
print('\r')
``````
##### 9*9乘法表
``````for i in range(1, 10):
for j in range(1, i+1):
print("%d * %d = %d" %(j, i, i*j), end='\t')
print('\r')
``````
##### 冒泡排序
``````def paixu(d_list):
for i in range(0, len(d_list)):
for j in range(i+1, len(d_list)):
if d_list[i] >= d_list[j]:
tmp = d_list[i]
d_list[i] = d_list[j]
d_list[j] = tmp
print(d_list)
li = [32, 23, 65, 32, 76, 79, 56, 89, 12]
paixu(li)
``````

### Python3 迭代器与生成器

#### 迭代器

``````import sys

it = iter(c_list)
print(c_list)
print(next(it))
for x in it:
print(x, end=' ')

it1 = iter(c_list)
while True:
try:
print(next(it1))
except StopIteration:
sys.exit()
``````

#### 生成器

##### 生成器函数
``````def fibonacci(n):
a = 0;
b = 1;
counter = 0;
while True:
if (counter > n):
return
yield a
a, b = b, a + b
counter += 1
#生成器函数返回一个迭代器
fibo = fibonacci(10)

while True:
try:
print(next(fibo), end=' ')
except:
sys.exit()
``````

### 函数

#### 函数传入不定长参数

``````#加了星号（*）的变量名会存放所有未命名的变量参数。如果在函数调用时没有指定参数，它就是一个空元组。我们也可以不向函数传递未命名的变量。
def printinfo(arg1, *vartuple):
"打印任何传入的参数"
print("输出：")
print(arg1)
for var in vartuple:
print(var)
return

printinfo(10)
printinfo(10, 20, 30)
``````

#### 匿名函数

python 使用 lambda 来创建匿名函数。

• lambda 只是一个表达式，函数体比 def 简单很多。
• lambda的主体是一个表达式，而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
• lambda 函数拥有自己的命名空间，且不能访问自己参数列表之外或全局命名空间里的参数。

sum = lambda arg1, arg2: arg1 + arg2
print(sum(10,20))

### 变量的作用域

Python中变量的作用域一共有4种，分别是：

• L （Local） 局部作用域
• E （Enclosing） 闭包函数外的函数中
• G （Global） 全局作用域
• B （Built-in） 内建作用域

``````B = int(2.9)  # 内建作用域

G = 0  # 全局作用域
def outer():
E = 1  # 闭包函数外的函数中
def inner():
L = 2  # 局部作用域
``````

### 一个完整的demo

``````import pickle
import os

datafile = 'C:\\Users\\root\\Desktop\\PyDemo\\person.data'
line = '#########################################'
message = '''
#######################################
*Welcome bookmark:                    *
*    press 1 to show list             *
*    press 2 to add pepole            *
*    press 3 to edit pepole           *
*    press 4 to delete pepole         *
*    press 5 to search pepole         *
*    press 0 to quit                  *
#######################################
'''
#打印菜单栏
print(message)

#创建一个人类，有姓名和电话号两个属性
class Person(object):
def __init__(self, name, number):
self.name = name
self.number = number

#获取数据
def get_data(filename = datafile):
if os.path.exists(filename) and os.path.getsize(filename):
with open(filename, 'rb') as f:
return None

#写入数据
def set_data(name, number, filename = datafile):
personList = {} if get_data() == None else get_data()
with open(filename, 'wb') as f:
personList[name] = Person(name, number)
pickle.dump(personList, f)

#保存字典格式的数据到文件
def save_data(dictPerson, filename = datafile):
with open(filename, 'wb') as f:
pickle.dump(dictPerson, f)

#显示所有联系人信息
def show_all():
personList = get_data()
if personList:
for v in personList.values():
print(v.name, v.number)
print(line)
else:
print('空空如也,请添加联系人！')
print(line)

#添加联系人
set_data(name, number)
print('添加联系人成功！')
print(line)

#更新联系人
def edit_person(name, number):
personList = get_data()
if personList:
if name in personList.keys():
personList[name] = Person(name, number)
save_data(personList)
print('更改联系人信息成功！')
else:
print('查无此人', name, ',请重试！')
print(line)

#删除联系人
def del_person(neme):
personList = get_data()
if personList:
if name in personList:
del personList[name]
save_data(personList)
print('删除联系人成功！')
else:
print(name, '不存在！')
print(line)

#查询联系人
def find_person(name):
personList = get_data()
if personList:
if name in personList.keys():
print(personList.get(name).name, personList.get(name).number)
else:
print('查无此人！', name)
print(line)

while True:
num = input('>>>')

if num == '1':
print('查看所有联系人:')
show_all()
elif num == '2':
print('添加联系人:')
name = input('请输入联系人姓名 >>')
number = input('输入联系人电话号 >>')
show_all()
elif num == '3':
print('更新联系人:')
name = input('请输入联系人姓名 >>')
number = input('输入联系人电话号 >>')
edit_person(name, number)
show_all()
elif num == '4':
print('删除联系人:')
name = input('请输入联系人姓名 >>')
del_person(name)
show_all()
elif num == '5':
print('查找联系人:')
name = input('请输入联系人姓名 >>')
find_person(name)
elif num == '6':
print(message)
elif num == '0':
break
else:
print('输入错误，请重试！')``````