"Поступает запрос на одно число (n) диапазон только от 3-20,
并且代码必须根据接收到的数字选择数字 (n) 倍数的数字对。示例:9 - 第一次插入的数字 1218273645 - 所需的密码(1 和 2、1 和 8、2 和 7、3 和 6、4 和 5 是成对的;数字 9 是每对总和的倍数)”
def get_input():
num = []
number = int(input('Введите число от 3х до 20ти: '))
if 3 <= number <= 20:
num.append(number)
else:
print(f'Не верное число: {number}')
return num
def get_shifr(n):
list1 = []
list2 = []
for i in n:
for j in range(1, n):
if i == j:
continue
elif str([j, i]) in list1:
continue
elif i % (i + j) == 0:
list2 += str(i) + str(j)
list1.append([i, j])
return list2
mum = get_input()
print(get_shifr(mum))
您不需要将输入数字添加到第一个函数中的列表中。你应该只留下范围检查。例如,像这样:
如果输入的数字在范围内,该函数将返回该数字;如果该数字在范围之外,该函数将返回 None。
第二个函数中的错误发生正是因为在该行中
第二个参数应该是一个数字,但您传递的是一个列表。
让我们将列表更改为数字,相应地更改两个循环的范围,去掉辅助列表并组装一串合适的对。
接下来,剩下的就是调用这两个函数,同时不要忘记报告输入的正确性。
有一个问题——一对两个相同的数字是否有效,例如,当输入一个偶数时,这个数字的两半是否有效?上面的代码暗示是的,他们会的。如果不是这种情况,则必须更换第二个循环的范围: