如果满足某些条件,则打印消息而不是数字

时间:2014-03-03 11:48:36

标签: python

我需要构建一个程序,打印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打印。

2 个答案:

答案 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