您能帮我找出程序中的错误吗?练习是;编写程序以输入范围在[1-1000]中的N,并打印出N以下所有包含数字7的数字的总和。如果用户插入了超出范围的数字并要求再次插入,则打印错误消息。
var = 1
while var == 1:
n=int(input("Enter the Number in range [1,1000]:"))
while n in range(0,1001):
k = 0
i=0
m=0
s=0
e=0
f=0
g=0
if n in range(100,1001):
for c in range(100,n+1):
if c%10 == 7:
i += c
if (c//10)%10 == 7:
c%10 != 7
s += c
if c//100 == 7:
(c//10)%10 != 7
c%10 != 7
e += c
print(1188 + i + s + e)
if n in range(0,100):
for b in range(1,n+1):
if b%10 == 7:
f += b
if b//10 == 7:
g += b
if b >= 77:
g=g-77
print(f+g)
break
else:
print("n is not in the range")
它总是通过加170而不是仅在此范围内来计算范围(170,180)之和。
在while
块中,我们正在测试n
是否有效。在while
块之后,有一个列表理解。
contains_seven = [x for x in range(0,n+1) if '7' in str(x)]
我们正在取0到n + 1之间的每个数字,其中包含'7'。之后,我们将通过sum()
函数对其求和并进行打印。完整的实现是:
while True:
n = int(input("input n: "))
if (n>0 and n<=1000):
break
print("n is not in the range")
contains_seven = [x for x in range(0,n+1) if '7' in str(x)]
a = sum(contains_seven)
print(a)
我们可以将数字转换为str()
,然后转换为list()
。之后,例如,我们从456
中获得['4', '5', '6'].
And now we can easy check if
7`。利润!
然后我们在列表中使用在sum()
中包含7到* args的数字,并得到最终结果!啊!是的
N = int(input("Write number: "))
while (N < 1) or (N > 1000):
N = int(input("Write number again: "))
all_numbers_with_seven = [n for n in range(1, N) if '7' in list(str(n))]
print(sum(all_numbers_with_seven))
P.s .:好的代码不需要解释