Task02条件语句以及循环语句

条件语句

1. if 语句

if expression:
    expr_true_suite

一些思考:

  • expression是在布尔表达式中指定的,其值为TrueFalse
  • -单个 if 语句中的 expression 条件表达式可以通过逻辑操作符 andornot 实现多重条件判断。

【例子】

if 2 > 1 and not 2 > 3:
    print('Correct Judgement!')

# Correct Judgement!

2. if - else 语句

if expression:
    expr_true_suite
else:
    expr_false_suite
  • 注意else后要有:

3. if - elif - else 语句

if expression1:
    expr1_true_suite
elif expression2:
    expr2_true_suite
    .
    .
elif expressionN:
    exprN_true_suite
else:
    expr_false_suite
  • elif 语句即为 else if,用来检查多个表达式是否为真,并在为真时执行特定代码块中的代码。

4.关于缩进

  • python中,缩进代表着封装代码块。在if语句中,使用缩进来告诉python不同子句内外的代码
  • python中,缩进通常以四个空格的倍数实现

5.assert关键词

  • assert这个关键词我们称之为“断言”,当这个关键词后边的条件为 False 时,程序自动崩溃并抛出AssertionError的异常。

  • 在进行单元测试时,可以用来在程序中置入检查点,只有条件为 True 才能让程序正常工作。

【例子】

assert 3 > 7

# AssertionError

循环语句

1.while循环

while 布尔表达式:
    代码块
  • while往往是循环重复未知次数,并在满足某些条件时结束

【例子】

string = 'abcd'
while string:
    print(string)
    string = string[1:]

# abcd
# bcd
# cd
# d

2. while - else 循环

while 布尔表达式:
    代码块
else:
    代码块

3.for循环

for 迭代变量 in 可迭代对象:
    代码块
  • for循环是迭代循环,在Python中相当于一个通用的序列迭代器,可以遍历任何有序序列,如str、list、tuple等,也可以遍历任何可迭代对象,如dict

4 for - else 循环

循环语句

5. range() 函数

range([start,] stop[, step=1])

range的用法十分灵活

  • range(101):可以用来产生0到100范围的整数,需要注意的是取不到101。
  • range(1,101):可以用来产生1到100范围的整数,相当于前面是闭区间后面是开区间。
  • range(1,101,2):可以用来产生1到100奇数,其中2是步长,即每次数值递增的值.
  • range(100,0,-2):可以用来产生100到1偶数,其中-2是步长,即每次数字递减的值。

6. enumerate()函数

enumerate(sequence, [start=0])
  • sequence – 一个序列、迭代器或其他支持迭代对象。
  • start – 下标起始位置。
  • 返回 enumerate(枚举) 对象

例子看循环语句

7. break 语句

break语句可以跳出当前所在层的循环。

8. continue 语句

continue终止本轮循环并开始下一轮循环

9.pass语句

循环语句

10.推导式

循环语句


练习题

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

解题思路

由题干明确知道循环所执行的次数,故采取for循环

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

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”,分别表示乌龟获胜,兔子获胜,或者两者同时到达终点。

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


样例输入:

10 5 5 2 20

样例输出

D

4

解题思路

由题干可知,本题的难点是若兔子比乌龟领先t米后,经过的路程将会不一样。因此,我们通过将若兔子比乌龟领先t米以及若兔子未领先乌龟t米进行分类,从而求出兔子和乌龟分别走的路程。

  • 分类领先t米以及未领先的情况
  • 分别求出路程
  • 比较路程,得出结论
v1,v2,t,s,l = map(int,input().split())
t1,t2,l1,l2,time = 0,0,0,0,0
while l1< l and l2 < l:
      if l1 - l2 >= t:    # 兔子比乌龟领先的情况t米
          l1 = v1 * t1
          t2 += s
          l2 = v2 * t2
      else:               # 兔子还未领先t米,就到达终点
          t1 += 1
          t2 += 1
          l1 = v1 * t1
          l2 = v2 * t2
if l1 > l2:               # 比较两者路程大小,判定输赢
    print('R')
    print(t2)
elif l1 < l2:
    print('T')
    print(t2)
else:
    print('D')
    print(t2)

结果如下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值