python中的错误输出

python中的错误输出,python,python-3.x,Python,Python 3.x,我必须编写一个程序,用“ping”一词替换3的倍数,用“pong”一词替换7的倍数,用“ping-pong”一词替换3和7的倍数,代码如下: 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

我必须编写一个程序,用“ping”一词替换3的倍数,用“pong”一词替换7的倍数,用“ping-pong”一词替换3和7的倍数,代码如下:

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

那么我如何用这个词来替换数字呢?

不要使用eval。你在处理数字。只需强制转换为
int
。最后,您总是打印出您不想要的号码的原因是因为您总是在检查任何条件之前打印。相反,如果所有检查都失败,请设置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')

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

由于在条件语句之前包含了
print(i)
语句,因此无论发生什么情况,代码都会打印“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,用于测试目的。会更容易。

和强制性的一行

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)))

我想打印所有的数字,并用世界来代替它们,所以我想如果我先打印循环就行了。谢谢,现在它正常工作了。不客气:)!如果我已经解决了你的问题,请将此标记为你问题的答案:)@Salehalswiti在
范围
中使用它之前,也许你应该将
x
转换为
int
。是的,那很好,我没看到。换了@HughBothwell@HughBothwell这是关于打印(i)语句在错误的位置这是我的错我忘了提到我必须从用户那里获取一个数字,因为我使用了eval。现在它正常工作了,并且该班轮必须+1。