欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python基础4

程序员文章站 2022-07-14 22:53:43
...

Python基础4

1. 条件判断语句和循环语句

if条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。

if 判断条件:
    执行语句……
else:
    执行语句……
# 例1:if 基本用法
flag=False
name="sara"
if name=="hellen":
    flag=True
    print("welcome sara")
else:
    print(name)
运行结果:
	sara

if 语句的判断条件可以用>(大于)、<(小于)、==(等于)、>=(大于等于)、<=(小于等于)来表示其关系。当判断条件为多个值时,可以使用以下形式:

if 判断条件1:
    执行语句1……
elif 判断条件2:
    执行语句2……
elif 判断条件3:
    执行语句3……
else:
    执行语句4……
num=0
if num==1:
    print("a")
elif num==2:
    print("b")
elif num==3:
    print("c")
else:
    print("hello")

if多个条件

num = 9
if num >= 0 and num <= 10:    # 判断值是否在0~10之间
    print ("haha")
# 输出结果: haha

2.while 循环

只要符合条件(条件语句返回的是True)则循环执行某个代码段

num = 5
while num < 5:
   print (num, " 小于 5")
   num = num + 1
else:
   print (num, " 大于或等于 5")
运行结果:
5  大于或等于 5

3.for语句

for循环常使用in对序列化对象(如列表、元祖等)进行遍历

for i in range(3):
    print(i)
运行结果:
0
1
2

4.break和continue语句

break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行

for letter in 'abc':  # 第一个实例
    if letter == 'c':
        break
    print('当前字母为 :', letter)

var = 3  # 第二个实例
while var > 0:
    print('当期变量值为 :', var)
    var = var - 1
    if var == 2:
       break
print("Good bye!")
运行结果:
当前字母为 : a
当前字母为 : b
当期变量值为 : 3
Good bye!

continue语句被用来告诉Python跳过当前循环块中的剩余语句,然后继续进行下一轮循环。

for letter in 'abc':  # 第一个实例
    if letter == 'c':
        continue
    print('当前字母为 :', letter)

var = 3  # 第二个实例
while var > 0:
    print('当期变量值为 :', var)
    var = var - 1
    if var == 2:
       continue
print("Good bye!")
运行结果:
当前字母为 : a
当前字母为 : b
当期变量值为 : 3
当期变量值为 : 2
当期变量值为 : 1
Good bye!

5.容器(container)

容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用in, not in关键字判断元素是否包含在容器中。通常这类数据结构把所有的元素存储在内存中(也有一些特例,并不是所有的元素都放在内存,比如迭代器和生成器对象)在Python中,常见的容器对象有:list(列表),set(集合),dict(字典),tuple(元组),str(字符串)(也有相关资料说str是原子类型数据,不属于容器范畴)等。

6.可迭代对象(iterable)

  • 凡是可以返回一个迭代器的对象都可称之为可迭代对象。

  • 可以对list、tuple、str等类型的数据使⽤for…in…的循环语法从其中依次拿到数据进行使用,我们把这样的过程称为遍历,也叫迭代。

  • 整型不是可以迭代的

  • 把可以通过for…in…这类语句迭代读取一条数据供我们使用的对象称之为可迭代对象(Iterable)

  • 只要实现了_iter_方法的对象就是可迭代的。 _iter_方法会返回迭代器(iterator)本身

    判断一个对象是否是可迭代对象:

    >>> from collections import Iterable  # 只导Iterable方法
    >>> isinstance('abc', Iterable)     
    True
    >>> isinstance(1, Iterable)     
    False
    >>> isinstance([], Iterable)
    True
    

    大部分对象都是可迭代,只要实现了__iter__方法的对象就是可迭代的。

    __iter__方法会返回迭代器(iterator)本身

    L1=[1,2,3]
    L2=L1.__iter__()
    print(L2)
    运行结果:
    <list_iterator object at 0x000002A64186D4A8>
    

7.迭代器(Iterator)

迭代器是用来帮助我们记录每次迭代访问到的位置,当我们对迭代器使⽤next()函数的时候,迭代器会向我们返回它所记录位置的下一个位置的数据。实际上,在使用next()函数的时候,调⽤的就是迭代器对象的 next 方法(Python3中是对象的 next 方法,Python2中是对象的next()方法)。所以,我们要想构造一个迭代器,就要实现它的__next__ 方法。但这还不够,python要求迭代器本身也是可迭代的,所以我们还要为迭代器实现 iter 方法,而 iter 方法要返回一个迭代器,迭代器自身正是一个迭代器,所以迭代器的 iter 方法返回自身即可。一个实现了 iter 方法和 next 方法的对象,就是迭代器。

可迭代对象与迭代器的区别

1)可迭代对象包含迭代器。

2)如果一个对象拥有__iter__方法,其是可迭代对象;如果一个对象拥有next方法,其是迭代器。

3)定义可迭代对象,必须实现__iter__方法;定义迭代器,必须实现__iter__和next方法。

8.生成器

生成器是一种特殊的迭代器,生成器自动实现了“迭代器协议”(即__iter__和next方法),不需要再手动实现两方法。

#生成器表达式
result=(x for x in range(3))
print(result)
运行结果:
<generator object <genexpr> at 0x000001994EBFFDE0>
# 列表解析表达式
result=[x for x in range(3)]
print(result)
运行结果:
[0, 1, 2]

9.作业

请对方输入一个0-9之间的数字,进行检查,若不是数字提示:您输入的不是数字,请输入0-9间的数字,若数字不在0-9范围内,提示用户输入0-9之间的数字,直至用户输入正确。
系统随机生成一个长度为3的数字列表,且列表中元素在0-9之间并且不相等。将用户输入与该列表进行比较,若为列表第一个元素,则荣获第一名,列表第二个元素,则荣获第二名,列表第三个名字,则荣获第三名,否则提示用户未得奖,输入1重新开始游戏,输入2则结束游戏。
注意:每次游戏中列表中数字要求随机生成,每轮游戏都不相等。

import random
flag = 1
while flag!=2 :
    while 1:
        num=input('请输入一个0-9之间的数字')
        if num.isdigit():   #判断是否为数字
            num=int(num)
            if num in range(10):
                break
            else:
                print('范围不再0-9中,请输入0-9之间的数字')
        else:
            print('您输入的不是数字,请输入0-9间的数字')
            continue 
    list = random.sample(range(0,9),3)
    print(alist)
    if num==list[0]:
        print('荣获第一名')
    elif num==list[1]:
        print('荣获第二名')
    elif num==list[2]:
        print('荣获第三名')
    else:
        print('未得奖')
    flag = input('输入1重新开始游戏,输入2则结束游戏')
    flag = int(flag)