python

时间:2016-02-22 02:34:06

标签: python python-3.x

我编写了一个程序来用“' ping'”替换3的数字倍数,将7的倍数替换为“pong'”的倍数和3的倍数和#乒乓球' ,这是代码:

x = eval(input('Enter a number : '))

for i in range(x,101):
    print(i)
    if i % 3 == 0 and i % 7 == 0 :

         print('ping-pong\n')

    if i % 3 == 0:
        print('ping\n')
    elif i % 7 == 0:
        print('pong \n')

这是输出:

1
2
3
ping

4
5
6
ping

7
pong 

8
9
ping

10
11
12
ping

13
14
pong 

15
ping

它应该是这样的:

1
2
ping
4
5
ping
pong
8
ping
10
11
ping
13
pong
ping

那么如何用数字替换数字?

3 个答案:

答案 0 :(得分:2)

强制性的单行,

print("\n".join('ping-pong' if not i % 21 else 'pong' if not i % 5 else 'ping' if not i % 3 else str(i) for i in range(int(input('Enter a number: ')), 101)))

答案 1 :(得分:0)

不要使用eval。你正在处理数字。刚刚转为hadoop fs -ls s3n://path/ 。最后,您总是打印出您不想要的号码的原因是因为您在检查任何条件之前始终打印。相反,如果所有检查都失败,则设置else条件,然后打印该数字。

像这样:

int

答案 2 :(得分:0)

您的代码打印'我'无论如何,因为您在条件语句之前包含了print(i)语句。请改用else语句。所以你的代码看起来像:

x = int(input('Enter a number : '))

for i in range(x,101):
    if i % 3 == 0 and i % 7 == 0 :
         print('ping-pong\n')
    elif i % 3 == 0:
        print('ping\n')
    elif i % 7 == 0:
        print('pong \n')
    else:
        print(i)

那应该有用。 PS设置101到10用于测试目的。会更容易。