Как печатать значения на отдельных строках в цикле, как избежать печати новой строки после последней итерации? - PullRequest
1 голос
/ 26 марта 2019

Я пытаюсь перебрать и распечатать каждый элемент, который является простым числом из диапазона чисел.Я хочу напечатать каждый из них в новой строке, но нет необходимости в новой строке в конце последнего печатаемого элемента.

def prime_in_range():

    lower=int(input())
    upper=int(input())
    if 1 <= lower   <= 10000 and 1 <= upper <= 10000:

        for num in range(lower, upper + 1):
            # prime numbers are greater than 1
            if num > 1:
                for i in range(2, num):
                    if (num % i) == 0:
                        break
                else:
                    print(num)  #changing this to print(num,end='') prints everything in same line
prime_in_range()

При вводе 1 и 10 мне нужен вывод как:

2
3
5
7

Но по умолчанию я получаю новую строку в конце

2
3
5
7

и получаю следующее с print(num,end=''):

2357

Ответы [ 3 ]

5 голосов
/ 26 марта 2019

Обходной путь - заставить вашу функцию выдавать выходные значения, а вызывающую сторону распаковать и распечатать значения с символом новой строки в качестве разделителя с sep='\n' и пустой строкой в ​​виде строки, заканчивающейся end='' вместо:

def prime_in_range(lower, upper):
    if 1 <= lower <= 10000 and 1 <= upper <= 10000:
        for num in range(lower, upper + 1):
            if num > 1:
                for i in range(2, num):
                    if (num % i) == 0:
                        break
                else:
                    yield num

print(*prime_in_range(2, 7), sep='\n', end='')
0 голосов
/ 27 марта 2019

Спасибо всем.Я немного подправил решение для отдельной печати последнего элемента и получил требуемые результаты (не уверен, что это лучшее решение): PS Ввод входных данных из STDIN является обязательным, а не передача вызова функции.

def prime_in_range():
    lower=int(input())
    upper=int(input())
    l=[]
    if 1 <= lower   <= 10000 and 1 <= upper <= 10000:

        for num in range(lower, upper + 1):
            # prime numbers are greater than 1
            if num > 1:
                for i in range(2, num):
                    if (num % i) == 0:
                        break
                else:
                    l.append(num)
                    #print(num)
                    #print(l)
    llen=(len(l))

    for i in range(llen-1):
        print(l[i])
    print(l[-1],end='')

Выход:

2
3
5
7
Process finished with exit code 0
0 голосов
/ 26 марта 2019

Вы можете сохранить числа в списке, а затем преобразовать список в строку, разделенную новой строкой.

def prime_in_range():

    lower=int(input())
    upper=int(input())
    temp = []
    if 1 <= lower   <= 10000 and 1 <= upper <= 10000:

        for num in range(lower, upper + 1):
            # prime numbers are greater than 1
            if num > 1:
                for i in range(2, num):
                    if (num % i) == 0:
                        break
                else:
                    # print(num)  #changing this to print(num,end='') prints everything in same line
                    temp.append(num)
    print('\n'.join(str(i) for i in temp))
prime_in_range()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...