在满足特定条件时打印消息而非数字
我需要写一个程序,打印从1到n之间的所有数字。如果这个数字能被7整除,就打印“boom!”代替这个数字;如果这个数字里面有数字7,也打印“boom!”;如果这两个条件都满足,就打印“boom-boom!”。比如,当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")
模运算部分是可以用的,但检查字符串的部分不行。我试着去掉模运算的部分,结果只是正常打印了1到100的数字。
2 个回答
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
试试这个:
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