判断语句(要求掌握多条件判断)
循环语句
三目表达式
容器
可迭代对象
迭代器
生成器
1 Python 循环语句
1.1 循环控制语句
#break
n = 1
while n <= 100:
if n > 10: # 当n = 11时,条件满足,执行break语句
break # break语句会结束当前循环
print(n)
n = n + 1
print('END')
#打印出1~10后,紧接着打印END,程序结束
#continue
n = 0
while n < 10:
n = n + 1
if n % 2 == 0: # 如果n是偶数,执行continue语句
continue # continue语句会直接继续下一轮循环,后续的print()语句不会执行
print(n)
#打印1,3,5,7,9,continue的作用是提前结束本轮循环,并直接开始下一轮循环
1.2 While循环
while循环,只要条件满足,就不断循环,条件不满足时退出循环
n = 100
sum = 0
counter = 1
while counter <= n:
sum = sum + counter
counter += 1
print("1 到 %d 之和为: %d" % (n,sum))
#1 到 100 之和为: 5050
count = 0
while count < 5:
print (count, " 小于 5")
count = count + 1
else:
print (count, " 大于或等于 5")
# 0 小于 5
# 1 小于 5
# 2 小于 5
# 3 小于 5
# 4 小于 5
# 5 大于或等于 5
1.3 For循环
Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串
>>>languages = ["C", "C++", "Perl", "Python"]
>>> for x in languages:
print (x)
# C
# C++
# Perl
# Python
sites = ["Baidu", "Google","Runoob","Taobao"]
for site in sites:
if site == "Runoob":
print("菜鸟教程!")
break
print("循环数据 " + site)
else:
print("没有循环数据!")
print("完成循环!")
# 循环数据 Baidu
# 循环数据 Google
# 菜鸟教程!
# 完成循环!
# 如果需要遍历数字序列,可以使用内置range()函数。它会生成数列
>>>a = ['Google', 'Baidu', 'Runoob', 'Taobao', 'QQ']
>>> for i in range(len(a)):
... print(i, a[i])
# 0 Google
# 1 Baidu
# 2 Runoob
# 3 Taobao
# 4 QQ
>>>
2 三目表达式
python并不支持? :这种符号所表达的先判断再选择的含义,但仍然有相应的语法支持:
为真时的结果 if 判断条件 else 为假时的结果(注意,没有冒号)
l = []
l.append(1 if x>=1. else 0)
np.where(判断条件,为真时的处理,为假时的处理)
x = np.where(x%2==1, x+1, x)
3. 容器
python容器主要介绍四部分内容,分别是列表、元组、字典和集合。这四类均在day1-3中有详细介绍,也可参考链接。
4. 可迭代对象
我们已经知道,可以直接作用于for循环的数据类型有以下几种:
- 一类是集合数据类型,如list、tuple、dict、set、str等;
- 一类是generator,包括生成器和带yield的generator function。
这些可以直接作用于for循环的对象统称为可迭代对象:Iterable。可以使用isinstance()判断一个对象是否是Iterable对象。
>>> from collections import Iterable
>>> isinstance([], Iterable)
True
>>> isinstance({}, Iterable)
True
>>> isinstance('abc', Iterable)
True
>>> isinstance((x for x in range(10)), Iterable)
True
>>> isinstance(100, Iterable)
False
5. 迭代器
- 迭代是Python最强大的功能之一,是访问集合元素的一种方式。
- 迭代器是一个可以记住遍历的位置的对象。
- 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
- 迭代器有两个基本的方法:iter() 和 next()。
- 字符串,列表或元组对象都可用于创建迭代器:
>>>list=[1,2,3,4]
>>> it = iter(list) # 创建迭代器对象
>>> print (next(it)) # 输出迭代器的下一个元素
1
>>> print (next(it))
2
6. 生成器
- 在 Python 中,使用了 yield 的函数被称为生成器(generator)。
- 跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。
- 在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行
next() 方法时从当前位置继续运行。 - 调用一个生成器函数,返回的是一个迭代器对象。
import sys
def fibonacci(n): # 生成器函数 - 斐波那契
a, b, counter = 0, 1, 0
while True:
if (counter > n):
return
yield a
a, b = b, a + b
counter += 1
f = fibonacci(10) # f 是一个迭代器,由生成器返回生成
while True:
try:
print (next(f), end=" ")
except StopIteration:
sys.exit()
# 0 1 1 2 3 5 8 13 21 34 55
7. 作业[并未成功……]
请对方输入一个0-9之间的数字,进行检查,若不是数字提示:您输入的不是数字,请输入0-9间的数字,若数字不在0-9范围内,提示用户输入0-9之间的数字,直至用户输入正确。
系统随机生成一个长度为3的数字列表,且列表中元素在0-9之间并且不相等。将用户输入与该列表进行比较,若为列表第一个元素,则荣获第一名,列表第二个元素,则荣获第二名,列表第三个名字,则荣获第三名,否则提示用户未得奖,输入1重新开始游戏,输入2则结束游戏。
注意:每次游戏中列表中数字要求随机生成,每轮游戏都不相等。
import random as rd
flag = 1
while flag != 1:
n = input("请输入一个0-9之间的数字:")
if n.isdigit() == False:
print("您输入的不是数字,请输入0-9间的数字!")
elif int(n) not in range(10):
print("请输入0-9间的数字!")
else:
print(int(n))
li = rd.sample(range(0,10),3)
print(li)
n = int(n)
if li[0] == n:
print('恭喜您荣获第一名')
elif li[1] == n:
print('恭喜您荣获第二名')
elif li[2] == n:
print('恭喜您荣获第三名')
else:
flag = int(input("很抱歉您未中奖"))
flag = input('请输入1重新开始游戏,或输入2结束游戏!')
flag = int(flag)