上传文件至「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