2020-07-23

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 range1500, 2700if 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]))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值