目录
1. 实现自己的数学模块mymath,提供有4个函数,分别为加减乘除,在B模块中调用A模块的函数。
2. 实现自己的字符串模块mystr,里面有方法:isdigit,strip, join,split
5. 引发一个异常,并将它抛除到上层函数,上层函数捕获该异常并处理
8. 定义一个元组,向元组中添加元素或者修改已有元素,并捕获异常
10.有一个ip.txt,里面每行是一个ip,实现一个函数,ping 每个ip的结果,把结果记录存到ping.txt中,格式为ip:0或ip:1 ,0代表ping成功,1代表ping失败
11.实现DOS命令执行功能,接受输入命令并执行,然后把执行结果打印到屏幕
13. 输入一个数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组
14. 平衡点,一个数组,有一个数字左边所有的数字加起来的总和等于这个数右边所有数字的总和,请输出这个数以及坐标
15. 将单词表中由相同字母组成的单词归成一类,每类单词按照单词的首字母排序,并按每类中第一个单词字典序由大到小排列输出各个类别。
17.lista=['a','abc','d','abc','fgi','abf'],寻找列表中出现次数最多的第一个字母,出现了几次
18.请输入星期几的前两个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母
19.有一堆100块的石头,2个人轮流随机从中取1-5块,谁取最后一块就谁win,编程实现此过程
20.实现一个方法,判断一个正整数是否是2的乘方,比如16是2的4次方,返回True;18不是2的乘方,返回False。要求性能尽可能高
1. 实现自己的数学模块mymath,提供有4个函数,分别为加减乘除,在B模块中调用A模块的函数。
# mymath.py
def add(a,b):
return a + b
def sub(a,b):
return a - b
def mul(a,b):
return a * b
def div(a,b):
return a / b
# p7-1-b.py
import mymath
print(mymath.add(3,5))
print(mymath.sub(12,7))
print(mymath.mul(4,8))
print(mymath.div(100,5))
2. 实现自己的字符串模块mystr,里面有方法:isdigit,strip, join,split
import string
from collections.abc import Iterable
def isdigit(s):
if not isinstance(s,str):
return False
for i in s:
if i not in "0123456789":
return False
return True
def strip(s,chars=string.whitespace):
if not isinstance(s,str) or not isinstance(chars,str):
return
s_len = len(s)
for i in range(s_len):
if s[i] not in chars:
result = s[i:]
break
for j in range(-1,-s_len-1,-1):
if s[j] not in chars:
result = result[:j+1]
break
return result
def join(s,chars=""):
if not isinstance(s,Iterable) or not isinstance(chars,str):
return
result = ""
s_len = len(s)
for i in range(s_len):
if not isinstance(s[i],str):
return
if i != s_len - 1:
result += s[i] + chars
else:
result += s[i]
return result
def split(s,sep=string.whitespace,maxsplit=-1):
if not isinstance(s,str) or not isinstance(sep,str):
return
if maxsplit == 0:
return [s]
result=[]
index=0
s_len = len(s)
if sep == string.whitespace:
if maxsplit == -1:
times = 0
for i in s:
if i in sep:
times += 1
maxsplit = times #这样统计到的maxplit值,在sep = string.whitespace,maxsplit>0时,替换有问题
while maxsplit > 0:
tmp = ""
for i in range(index,s_len):
if s[i] not in sep:
tmp += s[i]
index += 1
else:
index += 1
break
if tmp:
result.append(tmp)
maxsplit -= 1
if s[index:]:
result.append(s[index:])
else:
sep_len = len(sep)
if maxsplit == -1:
maxsplit = s.count(sep)
while maxsplit > 0:
tmp = ""
for i in range(index,s_len):
if s[i:i+sep_len] != sep:
tmp += s[i]
index += 1
else:
index += sep_len
break
result.append(tmp)
maxsplit -= 1
result.append(s[index:])
return result
if __name__ == "__main__":
# print(isdigit("1234"))
# print(isdigit("12aa34"))
# print(strip("\r\t\n ab cd \x0b\x0c"))
# print(strip(" xyz "))
# print(strip("***ab rt****","*"))
# print(join(["a","b","c"]))
# print(join(["a","b","c"],"."))
print(split("hello \n\t world \r hi china "))
print(split("hello \n\t world \r hi china ",maxsplit=2)) # 与标准函数结果不一致,标准函数结果为:['hello', 'world', 'hi china ']
print(split("aa***b**cd*E*","*"))
print(split("aa***b**cd*E*","*",0))
print(split("aa***b**cd*E","*",2))
print(split("aa***b**cd*E","**"))
3. 构建一个模块的层级包
4. 实现一个除法函数,并处理异常
def div(a,b):
try:
return a/b
except ZeroDivisionError as e:
return e
except Exception as e:
return e
print(div(3,0))
print(div(3,2))
5. 引发一个异常,并将它抛除到上层函数,上层函数捕获该异常并处理
def top_func(a,b):
try:
result = down_func(a,b)
except Exception as e:
print(e)
else:
print(result)
def down_func(a,b):
return a / b
top_func(5,0)
top_func(5,2)
6. 实现字符串、列表、元组和set之间互相转换
# 字符串转列表、元组、set
s="abcddb"
ls = list(s)
print("str to list:",ls)
ts=tuple(s)
print("str to tuple:",ts)
ss = set(s)
print("str to set:",ss)
# 列表转字符串、元组、set
l=[1,2,3,4,3,2,2]
str_l = ""
for i in l:
str_l += str(i)
print("list to str:",str_l)
tuple_l = tuple(l)
print("list to tuple:",tuple_l)
set_l = set(l)
print("list to set:",set_l)
# 元组转字符串、列表、set
t=(1,2,3,3,2,4,1)
str_t = ""
for i in t:
str_t += str(i)
print("tuple to str:",str_t)
list_t = list(l)
print("tuple to list:",list_t)
set_t = set(t)
print("tuple to set:",set_t)
# set转字符串、列表、元组
s=set([1,2,3,3,2,4,1])
str_s = ""
for i in s:
str_s += str(i)
print("set to str:",str_s)
list_s = list(s)
print("set to list:",list_s)
tuple_s = tuple(s)
print("set to tuple:",tuple_s)
7. 结合set对象,统计某个list出现的重复元素个数
>>> l=[1,2,4,4,3,3,3,2,1,4,5,8]
>>> print("list出现的重复元素个数:",le