先输入一数据上限n,再输入一因数f,
假设一序列由1,2,3...n。 如果序列中的任何一个数的因数含有f, 则把这个数移出序列。
输出序列中剩下的数据。
重复上述步骤,直到输入-1
请问这段代码应该怎么实现?
while(1):
n = int(input("请输入n:"))
if (n == -1):
break;
f = int(input("请输入因数f:"))
for i in range(1, n):
if (i % f != 0):
print(i, end = ' ')
print()
你看看这样呢
你的难点在哪里呢?是判断因数?还是移除?还是一直重复步骤呢?
如下:
# 定一个函数func,函数的入参是序列的最大值n和因数f
def func(n, f):
# 创建一个空列表
list_n = []
# 把1到n的数据装入列表
for i in range(1,n+1):
list_n.append(i)
# 遍历整个列表
for j in list_n:
# 如果f是j的因数,则把他从列表中删除
if j%f == 0:
list_n.remove(j)
# 打印处理后的列表
print(str(list_n))
# 执行函数
func(11,2)
写法很多,下面的代码仅供参考。
>>> def remove_factor():
n = int(input('请输入数据上限:'))
nums = list(range(1, n+1))
while True:
f = int(input('请输入因子(-1表示结束):'))
if f == -1:
print('结束')
break
nums = list(filter(lambda x:x%f>0, nums))
print(nums)
>>> remove_factor()
请输入数据上限:10
请输入因子(-1表示结束):3
[1, 2, 4, 5, 7, 8, 10]
请输入因子(-1表示结束):2
[1, 5, 7]
请输入因子(-1表示结束):-1
结束
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632