习题1:找到列表中第二大的数,可以用多种方法解决。

思路1: 找到最大的,删除掉,再找最大的

list2 = [2,3,4,5,6,7]
max_number = max(list2)
list2.remove(max_number)
#list2.remove(max(list2))
print("第二大的数:",max(list2))

思路2: 排好序找倒数第二个

list2 = [2,3,4,5,6,7]

print("第二大的数:",sorted(list2)[-2])

思路3: 遍历,声明两个变量,一个存最大的 一个存第二大的,然后逐一比对。

list2 = [2,3,4,5,6,7]

max_number = list2[0]
second_max_number = list2[0]

for n in list2:
    if n > max_number:
        second_max_number = max_number
        max_number = n

print("第二大的数:",second_max_number)

习题2:python代码得到2个列表的交集与差集 不许用set 交集思路:遍历list1,判断是否在list2中,在的话,则存入一个列表中。 差集思路:分别遍历list1和2,如果不在对方的list中,则存入一个列表中

list1 = [1,2,3,4]
list2 = [2,3,4,5,6,7]

in_list = []

u_list = []

for v in list1:
    if v in list2:
        in_list.append(v)

    elif v not in list2:
        u_list.append(v)

print("交集: ",in_list)
print("差集:",u_list)

差集2的实现方法:集合本身减去交集

list1 = [1,2,3,4]
list2 = [2,3,4,5,6,7]

in_list = []

diff_list = []

#union_list = list(set(list1 + list2))

for n in list1:
    if n in list2:
        in_list.append(n)

for n in list1:
    if n not in in_list:
        diff_list.append(n)
print("差集",diff_list)

冒泡排序:

l = [2,-2,3,4,5,6,7]


for i in range(len(l)):
    for j in range(len(l)-1-i):
        if l[j] > l[j+1]:
            temp = l[j]
            l[j] = l[j+1]
            l[j+1] = temp
print(l)
   

算法:

s = [-1,1,-2,2,3,-3]

找最大元素放到最后

第一步:交换2个元素

交换的方法1: a,b = b,a

交换2: temp=b b=a a=temp

第二步:我要找到这个list中最大的元素,把它放到列表的最后位置

位置0和位置1比,如果大,交换,否则不换 位置1和位置2位置比,如果大,交换,否则不换 位置2和位置3位置比,如果大,交换,否则不换 ... 位置4和和位置5位置比,如果大,交换,否则不换

1)基于坐标做遍历,最后一个元素不需要做遍历动作

   1 把元素逐一取出来    2 基于坐标位置逐一取出来,i,i+1

2)使用if当前元素和后一个元素做比对,如果大了,交换,否则啥也不干

找其他最大元素

把最后1个元素我不处理了,把之前的所有数,在做相同工作,第二大

把最后2个元素我不处理了,把之前的所有数,在做相同工作,第三大 把最后3个元素我不处理了,把之前的所有数,在做相同工作,第四大 ..... 把最后n-1个元素我不处理了,把之前的所有数,在做相同工作,第n大

查看内置函数

dir(builtins)

习题3:求一个字符串中的字母个数函数需判断传入参数的类型。必须使用ascii来判断是否字母

s = "abcddz122"
def letter_number(s):
    """ 统计一个字符串中字母的个数"""
    count_letter = 0
    if not isinstance(s,str):
        print("参数错误,请重新输入.")
        return -1
    else:
        for c in s:
            #(ord(c)>=ord("a") and ord(c) <=ord("z") )or (ord(c) >= ord("A") and ord(c) <= ord("Z"))
            if (ord(c)>=97 and ord(c) <=122 )or (ord(c) >= 65 and ord(c) <= 90):
                count_letter += 1
    return count_letter

print(letter_number(s))
print(letter_number(222))