Я не хочу выводить пустую строку в вывод

Я пытался end="", но поскольку print находится в loop, он не работает

def main():
    a=int(input())
    b=int(input())
    for i in range(a,b+1):
        prime=0
        for x in range(2,i):
            if(i%x==0):
                prime=prime+1
            else:
                prime=prime+0
        if(prime==0):
            print(i, end="") 
main()

Фактический результат:

907
911
919
929
937
941
947
953
967
971
977
983
991
997

Ожидаемое :

907
911
919
929
937
941
947
953
967
971
977
983
991
997
0
Charu 3 Июл 2019 в 19:15

3 ответа

Лучший ответ

Одна возможность состоит в том, чтобы собрать результаты в список и распечатать этот список (объединенный '\n') в конце:

def main():
    a=int(input())
    b=int(input())
    results = []
    for i in range(a,b+1):
        prime=0
        for x in range(2,i):
            if(i%x==0):
                prime=prime+1
            else:
                prime=prime+0
        if(prime==0):
            results.append(i)
    print('\n'.join(str(i) for i in results))
main()  

Я не совсем уверен, что вы пытаетесь сделать, вы также можете поэкспериментировать с заменой оператора print в приведенном выше коде на

print('\n'.join(str(i) for i in results), end = '')  
0
John Coleman 3 Июл 2019 в 16:31

Вы можете динамически распечатывать вещи, как это

for i in range(10):
    print(i, sep=' ', end='', flush=True)

Это выведет:

123456789

См. динамически печатать в одну строку, чтобы найти больше алгоритмов, которые могут соответствовать вашим потребностям!

0
Engineero 3 Июл 2019 в 16:41

Возможно, вы захотите взглянуть на это: как удалить завершающий символ новой строки . В нем говорится, что нужно использовать .rstrip (), но вы должны прочитать документы, чтобы убедиться.

0
hello_there 3 Июл 2019 в 16:20