Python基础知识
Task2
一、条件语句
if语句
if expression:
expr_true_suite
if 语句的条件表达式expression结果为真时,执行expr_true_suite,否则将继续执行紧跟在该代码后面的语句。
单个if语句的expression条件表达式布尔操作符and,or,not实现多重条件判断。
if_else语句
if与else搭配使用,如果if语句的条件表达式布尔值为假,那么程序执行else语句后的代码。
if语句支持嵌套,可以在一个if语句中嵌入另一个if语句,从而构成不同的选择结构。要注意缩进问题。
if_elif_else语句
elif语句即为else if,用来检查多个表达式是否为真,并在执行为真时执行指定代码块中的代码。
if expression1:
expr1_true_suite
elif expression2:
expr2_true_suite
…
elif expressionN:
exprN_true_suite
else:
expr_false_suite
assert关键词
assert这个关键词称为“断言”,当这个关键词后面的条件为False时,程序自动崩溃并抛出AssertionError。
在进行单元测试时,可以用来在程序中置入检查点,只有条件为True才能让程序正常工作。
二、循环语句
while循环
语句
while 布尔表达式:
代码块
while循环的代码会一直循环执行,直到布尔表达式的值为布尔假。
布尔表达式可以不带有运算符,为数值也可。当while后写入一个非零整数时,视为真值,执行循环体;写入0,视为假值,不执行循环体。也可以写入str、list或任何序列,长度非零则视为真值,执行循环体;否则视为假值,不执行循环体。
while-else循环
while 布尔表达式:
代码块
else:
代码块
当while循环正常执行完的情况下,执行else输出,如果while循环中执行了跳出循环的语句,比如break,将不执行else代码块的内容。
for循环
for循环是迭代循环,在Python中相当一个通用的序列迭代器,可以遍历任何有序序列,如str、list、tuple等,也可以遍历任何可迭代对象,如dict。
for 迭代变量 in 可迭代变量:
代码块
for-else循环
语句
for 迭代变量 in 可迭代对象:
代码块
else:
代码块
当for循环正常执行完的情况下,执行else输出,如果for循环中执行了跳出循环的语句,比如break,将不执行else代码块的内容,与while-else语句一样。
range()函数
语句
range([start,]stop[, step=1])
括号括起来的参数是可选的。
range这个函数的作用是生成一个从start参数的值开始到stop参数的值结束的数字序列,该序列含start的值但不包含stop的值。
step = 1,步调默认值为1。
enumerate()函数
语句
enumerate(sequence,[start=0])
sequence,一个序列、迭代器或其他支持迭代对象。
start下标起始位置
返回enumerate(枚举)对象
enumerate()与for循环的结合使用
for i, a in enumerate(A)
do something with a
i为该元素一个索引值(默认从0开始),此外,用enumerate(A,j)还可以确定索引起始值为j。
languages = ['Python', 'R', 'Matlab', 'C++']
for language in languages:
print('I love', language)
print('Done!')
'''
I love Python
I love R
I love Matlab
I love C++
Done!
'''
for i, language in enumerate(languages, 2):
print(i, 'I love', language)
print('Done!')
'''
2 I love Python
3 I love R
4 I love Matlab
5 I love C++
Done!
'''
break语句
break语句可以跳出当前所在层的循环。
continue语句
continue终止本轮循环并开始下一轮循环
pass语句
pass是空语句,不做任何操作
练习题1.
编写一个Python程序来查找那些可以被7除余5的整数的数字,介于1500和2700之间。
for x in range(1500, 2700)
if x % 7 == 5:
print (x)
练习题2.
龟兔赛跑游戏
题目描述: 话说这个世界上有各种各样的兔子和乌龟,但是研究发现,所有的兔子和乌龟都有一个共同的特点——喜欢赛跑。 于是世界上各个角落都不断在发生着乌龟和兔子的比赛,小华对此很感兴趣,于是决定研究不同兔 子和乌龟的赛 跑。他发现,兔子虽然跑比乌龟快,但它们有众所周知的毛病——骄傲且懒惰,于是在与乌龟的比赛中,一旦任一 秒结束后兔子发现自己领先t米或以 上,它们就会停下来休息s秒。对于不同的兔子,t,s的数值是不同的,但是所 有的乌龟却是一致——它们不到终点决不停止。 然而有些比赛相当漫长,全程观看会耗费大量时间,而小华发现只要在每场比赛开始后记录下兔子和乌龟的数据 ——兔子的速度v1(表示每秒兔子能跑v1 米),乌龟的速度v2,以及兔子对应的t,s值,以及赛道的长度l——就能 预测出比赛的结果。但是小华很懒,不想通过手工计算推测出比赛的结果,于是他找 到了你——清华大学计算机系 的高才生——请求帮助,请你写一个程序,对于输入的一场比赛的数据v1,v2,t,s,l,预测该场比赛的结果。
def MoreQuicker(a):
flag = 0
for x in a:
if flag == 0:
v1 = x
flag += 1
continue
if flag == 1:
v2 = x
flag += 1
continue
if flag == 2:
t = x
flag += 1
continue
if flag == 3:
s = x
flag += 1
continue
if flag == 4:
l = x
l1 = l2 = 0
i =0
while l1 < l and l2 < l:
l1 += v1
l2 += v2
i += 1
if l1 > l2 and l1 >= l:
return ('R', i)
break
if l1 - l2 >= t:
k = s
while k:
l2 += v2
i += 1
if l1 < l2 and l2 >= l:
return ('T', i)
break
k -= 1
if l1 == l2 and l2 == l:
return('D',i)
print(MoreQuicker([10, 5, 5, 2, 20]))