想找出小于等于n的所有正整数,这个数满足不能被7整除,而且位数上不能出现7,这段代码为什么最后的结果还是会出现位数上有7的数字,不知道哪里出现问题了。
n=int(input("请输入一个正整数:"))
sum_num=0
for i in range(1,n+1):
n1=str(i)
for j in n1:
if j == "7":
n2=int(n1)
for i in range(1,n+1):
if i % 7 != 0 and i != n2:
print(i)
内循环中判断各个位是否包含7,如果包含则当前数不满足结束内循环,进入下一次外循环。否则内循环都没找到整除7的数,继续判断当前数是否能被7整除
n=int(input("请输入一个正整数:"))
sum_num=0
for i in range(1,n+1):
n1=str(i)
for j in n1:
if j == "7":
break
else:
if i % 7 != 0:
print(i)
num=int(input("请输入一个正整数:"))
list=[]
for i in range(1,num+1):
if i % 7 != 0 and ("7"not in str(i)):
list.append(i)
sum=0
for j in list:
print(j,end=' ')
这段代码中有一个问题是,在第二个 for 循环中,你在检查每个数字是否为 7 时,没有将 n2 赋值为 0。这意味着即使没有数字包含 7,n2 仍然为最后一次赋值的数字。因此最后一个 if 语句中的条件 i != n2 将始终为 true,导致包含 7 的数字也被打印出来。
修改后:
n=int(input("请输入一个正整数:"))
sum_num=0
n2=0
for i in range(1,n+1):
n1=str(i)
for j in n1:
if j == "7":
n2=int(n1)
if i % 7 != 0 and i != n2:
print(i)
稍等一下,我看看,简单这样写就可以了,望采纳,谢谢!
n=int(input("请输入一个正整数:"))
for i in range(1,n+1):
if i % 7 != 0 and str(i).replace('7','') == str(i):
print(i)
以及:
n=int(input("请输入一个正整数:"))
for i in range(1,n+1):
if i % 7 != 0 and '7' not in str(i):
print(i)