1 def analyzeAge( age ):
2    if age < 21:
3        print("You are a child")
4    if age > 21:
5        print("You are an adult")
6    else:   #Handle all cases were 'age' is negative 
7        print ("The age must be a positive integer!")
8 
9 analyzeAge( 18 )  #Calling the function
You are a child
The age must be a positive integer!

上一个单元格出错,一次出现了两个输出。因为它判断第一个IF是满足,有一个输出,判断第二个IF不满足,就走入了ELSE,所以有了第二个输出。

def analyzeAge( age ):
   if age < 21:
       print("You are a child")
   elif age > 21:
       print("You are an adult")
   else:   #Handle all cases were 'age' is negative 
       print ("The age must be a positive integer!")

analyzeAge( 18 )  #Calling the function
You are a child

这次,第一个IF满足之后,就不看ELIF后的内容了。

704二分查找

要点1:

  在定义right的值时,要写right = len(nums)-1,比如数组有6个元素,但是5是最大的下标。

要点2:

  为什么不写成如下形式?

if nums[middle] == target :
    return middle

因为最后是[3,5]之间找到4。通过不断缩小这个闭区间(closed inrerval),找到它。

 

from typing import List

class Solution:
    def search(self, nums: List[int], target: int) -> int:
        left = 0
        right = len(nums) -1

        while(left <= right ):
            middle = ( left + right ) // 2
            if ( nums[middle] < target ): 
                left = middle + 1           
            elif ( nums[middle] > target ):
                right = middle -1
            else:
                   return middle
        return -1

list1 = [-1,0,3,5,9,12]
my_solution = Solution()    
print( my_solution.search(list1,9) )

 

posted on 2022-09-21 23:56  竹马真心  阅读(41)  评论(0编辑  收藏  举报