Есть ли способ печатать диапазоны, используя для в одной строке в Python - PullRequest
0 голосов
/ 06 ноября 2019

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

x=int(input())
if x<0:
    print("you did not enter a natural nubmer")
else:
    if x > 1:
        for i in range(2, x//2):
            if (x % i) == 0:
                print(x, "is not a prime number")
                for n in range (2, x-1):
                    if x%n==0:
                        print[n]
                break
        else:
            print(x, "is a prime nubmer")
            print([1,x])
    else:
        print(x, "is not a prime number")
        for n in range (2, x-1):
                    if x%n==0:
                        print[n]

Например, 8, он напечатает, что это не простое число, а затем напечатает [2] и [4], но я хочу напечатать [2,4]. Пожалуйста, помогите, спасибо.

Ответы [ 2 ]

1 голос
/ 06 ноября 2019

Вот что такое list comprehension:

divs = [n for n in range(2, x - 1) if x % n == 0]
print(divs) # [2, 4]
0 голосов
/ 06 ноября 2019

для печати несколько раз, не переходя на следующую строку, вы можете использовать эту часть кода: print (n, end = ""). Таким образом, ваш код становится таким:

x=int(input())
if x<0:
    print("you did not enter a natural nubmer")
else:
    if x > 1:
        for i in range(2, x//2):
            if (x % i) == 0:
                print(x, "is not a prime number")
                for n in range (2, x-1):
                    if x%n==0:
                        print(n,end=" ")
                break
        else:
            print(x, "is a prime nubmer")
            print([1,x])
    else:
        print(x, "is not a prime number")
        for n in range (2, x-1):
                    if x%n==0:
                        print[n]
...