# 一、魔术方法作业
# 设计一个类能让两个列表使用比较运算符的形式进行比较。
# List1 = [1,2,3,[1,2],’a’]
# List2 = [1,[‘1’,8],,[1,2],’a’]
# 注意:只关注列表中的数字类型元素,不包含字符串
# 如List1 > List2 1+2+3+1+2>1+8+1+2 返回false
# List1 < List2 1+2+3+1+2<1+8+1+2 返回True
# List1 == List2 1+2+3+1+2==1+8+1+2 返回false
# 实现以上3个比较符的魔术方法。
class GT:
def __init__(self,__list):
self.num=0
self.all(__list)
def all(self,value):
for i in value:
if type(i)==list:
self.all(i)
elif type(i)==str:
continue
else:
try:
self.num+=float(i)
except:
pass
def __gt__(self, other):
# print(self.num,other.num)
return self.num<other.num
list1=GT([1,2,3,[1,2],"a"])
list2=GT([1,["1",8],[1,2],"a"])
list3=GT([1,["1",8],[1,3],"a"])
a=list1>list2
print(a)
a=list2>list3
print(a)
# 二、逻辑题(可以使用正则或者其他方法)
# 字符串中有括号”()[]{}”,设计一个程序,判断该字符串是否有效
# 括号必须以正确的顺序配对,如:“()”、“()[]”是有效的,但“([)]”无效。
def brackets_match(s):
# 把一个list当做栈使用
ls = []
parentheses = "()[]{}"
for i in range(len(s)):
si = s[i]
# 如果不是括号则继续
if parentheses.find(si) == -1:
continue
# 左括号入栈
if si == '(' or si == '[' or si == '{':
ls.append(si)
continue
if len(ls) == 0:
return False
# 出栈比较是否匹配
p = ls.pop()
if (p == '(' and si == ')') or (p == '[' and si == ']') or (p == '{' and si == '}'):
continue
else:
return False
if len(ls) > 0:
return False
return True
a=brackets_match("()[]{}")
print(a)
作业20220208
最新推荐文章于 2024-07-20 17:12:48 发布