上传文件至「week12」

This commit is contained in:
2026-06-01 02:02:53 +00:00
parent 31078ddcf7
commit 185980b30f
5 changed files with 104 additions and 0 deletions

9
week12/continueanyway.py Normal file
View 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
View 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
View 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
View 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
View 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()