Datawhale |Python Day4

判断语句(要求掌握多条件判断)
循环语句
三目表达式
容器
可迭代对象
迭代器
生成器
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)
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值