“这是一个通过将列表除以给定的数字来打印余数列表的程序,我也不完全理解如果有人能够解释,如何创建一个装饰器会有帮助
# to print array of items of remainders
number_in_array = int(input("How many numbers do you want in the array? "))
array = []
remainder_array = []
for i in range(0,number_in_array):
item_in_array = int(input("Enter no "+str(i+1)+" item : "))
array.append(item_in_array)
print("Your array is :")
print(array)
divisor = int(input("Enter the number to divide array with : "))
def decider(function):
def whenzero(array,divisor):
for i in range(0,number_in_array):
if array[i] == 0:
print("Division is not possible")
array.pop(i)
else:
return function(array,divisor)
return whenzero()
@decider
def divide(array,divisor):
for i in range(0,number_in_array):
remainder = array[i] % divisor
remainder_array.append(remainder)
print(remainder_array)
divide(array,divisor)
谢谢Anwarvic,它确实解决了非类型错误,但当我希望它在列表中的项目为0时显示“不可能”时,它会显示此错误:
Traceback (most recent call last):
File "C:/Users/acer/PycharmProjects/untitled/venv/Practice.py", line 26, in <module>
divide(array, divisor, number_in_array,remainder_array)
File "C:/Users/acer/PycharmProjects/untitled/venv/Practice.py", line 14, in whenzero
if array[i] == 0:
IndexError: list index out of range
我将代码编辑如下:
# to print array of items of remainders
number_in_array = int(input("How many numbers do you want in the array? "))
array = []
remainder_array = []
for i in range(0,number_in_array):
item_in_array = int(input("Enter no "+str(i+1)+" item : "))
array.append(item_in_array)
print("Your array is :")
print(array)
divisor = int(input("Enter the number to divide array with : "))
def decider(function):
def whenzero(array,divisor,number_in_array,remainder_array):
for i in range(0,number_in_array):
if array[i] == 0:
print("Division is not possible")
array.pop(i)
else:
return function(array,divisor,number_in_array,remainder_array)
return whenzero
@decider
def divide(array,divisor,number_in_array,remainder_array):
for i in range(0,number_in_array):
remainder = array[i] % divisor
remainder_array.append(remainder)
print(remainder_array)
divide(array, divisor, number_in_array,remainder_array)
就快到了,只需从
decider
返回whenzero
,如下所示:装饰器是一种设计模式,可用于在最后一刻为代码派生新功能。我真的建议读一下这篇文章来了解更多
相关问题 更多 >
编程相关推荐