我需要构建一个程序,打印1到n之间的所有数字,如果我们有一个可被7打印的数字“繁荣!”而不是一个数字,如果数字有数字7,打印“繁荣!”相反,如果两个印刷热潮繁荣!例如,对于n = 18:
1
2
3
4
5
6
boom-boom!
8
9
10
11
12
13
boom!
15
16
boom!
18
这是我到目前为止所做的,我几乎没有编码经验,所以我一定做错了:
n=100
intlst=range(n+1)
strlst=str(range(n+1))
for i in intlst:
print(i)
if i % 7 == 0:
print("boom")
if "7" in strlst:
print("boop")
模数有效但字符串检查不起作用。我尝试在没有modulu部分的情况下运行它,我只得到正常的1到100打印。
答案 0 :(得分:4)
如果您不熟悉编码,最好用简单的“伪代码”语言写下您的算法。这样你就不会被奇怪的名字和功能所淹没。所以,如果我理解正确,你会找到这样的东西:
for each *number* in the range [1,100] do:
if *number* is divisible by 7 and contains the number 7 then print "boom-boom!"
else if *number* has digit 7 in it or is divisible by 7, then print "boom!"
else print *number*
现在你要做的就是把这个算法翻译成python,realli打败了我;)
答案 1 :(得分:1)
试试这个:
n = 100
for i in xrange(1, n + 1):
s = str(i)
if "7" in s and i % 7 == 0:
print "boom-boom!"
elif "7" in s or i % 7 == 0:
print "boom!"
else:
print i