python学习
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习相关的知识,希望对你有一定的参考价值。
习题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))
以上是关于python学习的主要内容,如果未能解决你的问题,请参考以下文章