文章目录
条件语句
1. if 语句
if expression:
expr_true_suite
一些思考:
expression
是在布尔表达式中指定的,其值为True
或False
- -单个 if 语句中的
expression
条件表达式可以通过逻辑操作符and
,or
和not
实现多重条件判断。
【例子】
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)