• Python基础TASK2:条件语句与循环语句


    Python基础TASK2:条件语句与循环语句

    1.条件语句

    assert关键词

    assert这个关键词我们称之为“断言”,当这个关键词后边的条件为 False 时,程序自动崩溃并抛出AssertionError的异常。断言可以在条件不满足程序运行的情况下直接返回错误,而不必等待程序运行后出现崩溃的情况,例如我们的代码只能在 Linux 系统下运行,可以先判断当前系统是否符合条件。
    语法格式如下:

    assert expression
    

    等价于:

    if not expression:
        raise AssertionError
    

    assert 后面也可以紧跟参数:

    assert expression [, arguments]
    

    等价于:

    if not expression:
        raise AssertionError(arguments)
    

    实例:判断当前系统是否为Linux,不满足直接不运行接下来的代码:

    import sys
    assert ('linux' in sys.platform), "该代码只能在 Linux 下执行"
    
    # 接下来要执行的代码
    

    2.循环语句

    while

    如果布尔表达式不带有<、>、==、!=、in、not in等运算符,仅仅给出数值之类的条件,也是可以的。当while后写入一个非零整数时,视为真值,执行循环体;写入0时,视为假值,不执行循环体。也可以写入str、list或任何序列,长度非零则视为真值,执行循环体;否则视为假值,不执行循环体。

    enumerate()函数

    enumerate(sequence, [start=0])
    

    sequence -- 一个序列、迭代器或其他支持迭代对象。
    start -- 下标起始位置。
    返回 enumerate(枚举) 对象

    seasons = ['Spring', 'Summer', 'Fall', 'Winter']
    lst = list(enumerate(seasons))
    print(lst)
    # [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
    lst = list(enumerate(seasons, start=1))  # 下标从 1 开始
    print(lst)
    # [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
    

    相当于给了列表内每个元素一个索引。生成类似字典集的数组。用 enumerate(A, j) 还可以确定索引起始值为 j。

    跳出循环的语句

    break :直接跳出当前所在层的循环,不继续进行该循环。
    continue :终止本轮循环并开始下一轮循环,不继续后面的循环内语句,直接开启下一轮循环。

    推导式

    列表推导式:

    对列表内的元素进行函数运算,得到新的列表。
    例:

    x = [-4, -2, 0, 2, 4]
    y = [a * 2 for a in x]
    print(y)
    # [-8, -4, 0, 4, 8]
    

    元组推导式

    对元组内元素进行函数运算,得到新的元组。

    ( expr for value in collection [if condition] )
    

    此外还有字典推导式,集合推导式。

    3.练习题

    1.编写一个Python程序来查找那些既可以被7整除又可以被5整除的数字,介于1500和2700之间。

    for i in range(1500,2701):
        if i % 7 ==0 and i % 5 ==0:
            print(i)
    

    可得到结果:

    1505
    1540
    1575
    1610
    1645
    1680
    1715
    1750
    1785
    1820
    1855
    1890
    1925
    1960
    1995
    2030
    2065
    2100
    2135
    2170
    2205
    2240
    2275
    2310
    2345
    2380
    2415
    2450
    2485
    2520
    2555
    2590
    2625
    2660
    2695
    

    2.2、龟兔赛跑游戏

    题目描述:

    话说这个世界上有各种各样的兔子和乌龟,但是研究发现,所有的兔子和乌龟都有一个共同的特点——喜欢赛跑。于是世界上各个角落都不断在发生着乌龟和兔子的比赛,小华对此很感兴趣,于是决定研究不同兔 子和乌龟的赛跑。他发现,兔子虽然跑比乌龟快,但它们有众所周知的毛病——骄傲且懒惰,于是在与乌龟的比赛中,一旦任一秒结束后兔子发现自己领先t米或以 上,它们就会停下来休息s秒。对于不同的兔子,t,s的数值是不同的,但是所有的乌龟却是一致——它们不到终点决不停止。

    然而有些比赛相当漫长,全程观看会耗费大量时间,而小华发现只要在每场比赛开始后记录下兔子和乌龟的数据——兔子的速度v1(表示每秒兔子能跑v1 米),乌龟的速度v2,以及兔子对应的t,s值,以及赛道的长度l——就能预测出比赛的结果。但是小华很懒,不想通过手工计算推测出比赛的结果,于是他找 到了你——清华大学计算机系的高才生——请求帮助,请你写一个程序,对于输入的一场比赛的数据v1,v2,t,s,l,预测该场比赛的结果。

    输入:

    输入只有一行,包含用空格隔开的五个正整数v1,v2,t,s,l,其中(v1,v2< =100;t< =300;s< =10;l< =10000且为v1,v2的公倍数)

    输出:

    输出包含两行,第一行输出比赛结果——一个大写字母“T”或“R”或“D”,分别表示乌龟获胜,兔子获胜,或者两者同时到达终点。

    第二行输出一个正整数,表示获胜者(或者双方同时)到达终点所耗费的时间(秒数)。

    def RandT(v1,v2,t,s,l):
        T_t = l/v2
        t_2 = 0
        t_1 = 0
        lu_1 = 0
        flag = 1
        while flag:
            t_1 = t_1 + 1
            t_2 = t_2 + 1
            lu_1 = t_2 * v_1
            if lu_1 >= l:
                flag = 0
            elif (lu_1 - t_2 * v_2) >= t:
                t_1 = t_1 + s
        if t_1 > T_t:  # 根据时间判断输赢
            print("T")
            print(T_t,t_1)
        elif t_1 < T_t:
            print("R")
            print(t_1)
        else:
            print("D")
            print(t_1,T_t)
    
    list_1=[]
    v1,v2,t,s,l=input("请依次输入v1,v2,t,s,l(空格隔开)其中(v1,v2< =100;t< =300;s< =10;l< =10000且为v1,v2的公倍数):
    ").split(' ')
    list=[v1,v2,t,s,l]
    for i in list:       #将输入的字符串转为正整数并读入新列表
        data=int(i)
        list_1.append(data)
    v_1,v_2,add,ts,lu=list_1   #依次取出数据
    RandT(v_1,v_2,add,ts,lu)
    

    可得结果:

    请依次输入v1,v2,t,s,l(空格隔开)其中(v1,v2< =100;t< =300;s< =10;l< =10000且为v1,v2的公倍数):
    10 5 5 2 20
    D
    4 4.0
    
  • 相关阅读:
    vue中倒计时的用法
    ant.design 中各种问题
    vue-cli3.0跨域代理问题
    vue-cli3.0配置多页面应用
    vue-axios中post和get携带参数和token
    后台返回的时间戳转化为前端的日期
    微信与支付宝二维码在页面中的使用
    git梗概介绍
    键盘和鼠标事件的区别和使用
    vue.js学习笔记(5)— Vue路由传参
  • 原文地址:https://www.cnblogs.com/dingdingdongs/p/13369504.html
Copyright © 2020-2023  润新知