上传文件至「week12」
This commit is contained in:
9
week12/continueanyway.py
Normal file
9
week12/continueanyway.py
Normal file
@@ -0,0 +1,9 @@
|
||||
from sys import stderr
|
||||
|
||||
def ca(fn):
|
||||
def call(*args,**kwargs):
|
||||
try:
|
||||
fn(*args,**kwargs)
|
||||
except Exception as e:
|
||||
print(type(e).__name__,":",e,file=stderr)
|
||||
return call
|
||||
24
week12/ex1.py
Normal file
24
week12/ex1.py
Normal file
@@ -0,0 +1,24 @@
|
||||
def handleZeroDivisionError(lmbd):
|
||||
def runlambda(*args,**kwargs):
|
||||
try:
|
||||
return lmbd(*args,**kwargs)
|
||||
except ZeroDivisionError:
|
||||
print("Zero division detected!")
|
||||
return runlambda
|
||||
|
||||
# usage: handleZeroDivisionError(lambda)()
|
||||
# or:
|
||||
|
||||
@handleZeroDivisionError
|
||||
def div(a,b):
|
||||
return a/b
|
||||
|
||||
def main():
|
||||
print(handleZeroDivisionError(lambda:1/0)())
|
||||
print(handleZeroDivisionError(lambda:1/1)())
|
||||
print(div(1,0))
|
||||
print(div(1,1))
|
||||
return 0
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
18
week12/ex2.py
Normal file
18
week12/ex2.py
Normal file
@@ -0,0 +1,18 @@
|
||||
from continueanyway import ca
|
||||
|
||||
@ca
|
||||
def ValidateInteger(i):
|
||||
if type(i)==int:
|
||||
print(f"{i} is a valid int")
|
||||
return i
|
||||
raise ValueError(f"The given number {i} is not a int")
|
||||
|
||||
def main():
|
||||
ValidateInteger("10")
|
||||
ValidateInteger(10.0)
|
||||
ValidateInteger("dshjkfsdjhfkjsd")
|
||||
ValidateInteger(10)
|
||||
return 0
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
21
week12/ex3.py
Normal file
21
week12/ex3.py
Normal file
@@ -0,0 +1,21 @@
|
||||
try:from decimal import Decimal
|
||||
except:Decimal = float
|
||||
from continueanyway import ca
|
||||
|
||||
@ca
|
||||
def ValidateNumerical(i):
|
||||
try:
|
||||
ii = Decimal(i)
|
||||
print(f"{i} is a valid number")
|
||||
return ii
|
||||
except:raise TypeError(f"The given {i} is not a number")
|
||||
|
||||
def main():
|
||||
ValidateNumerical("10")
|
||||
ValidateNumerical(10.0)
|
||||
ValidateNumerical("dshjkfsdjhfkjsd")
|
||||
ValidateNumerical(10)
|
||||
return 0
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
32
week12/ex4.py
Normal file
32
week12/ex4.py
Normal file
@@ -0,0 +1,32 @@
|
||||
from continueanyway import ca
|
||||
|
||||
def handleIndexError(lmbd):
|
||||
def runlambda(*args,**kwargs):
|
||||
try:
|
||||
return lmbd(*args,**kwargs)
|
||||
except IndexError:
|
||||
print("IndexError detected!")
|
||||
return runlambda
|
||||
|
||||
class listIE(list):
|
||||
def __init__(self, iterable):
|
||||
super().__init__(iterable)
|
||||
|
||||
@handleIndexError
|
||||
def __getattribute__(self, name):
|
||||
return super().__getattribute__(name)
|
||||
|
||||
@handleIndexError
|
||||
def __getitem__(self, s):
|
||||
return super().__getitem__(s)
|
||||
|
||||
def main():
|
||||
l1 = listIE([1,2,3])
|
||||
print(l1[1])
|
||||
print(l1[2])
|
||||
print(l1[3])
|
||||
|
||||
return 0
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in New Issue
Block a user