форматированный вывод с циклами for

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

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

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

def perfect_square(num):

    for number in range(1, num, 1):
        square = number ** 2
#             print(square, end='')
    print("the perfect squares from {} are: {}".format(num, square))

ВЫХОД ДЛЯ ВЫШЕ

Enter a positive integer: 10
the perfect squares from 10 are: 81

ВТОРАЯ ПОПЫТКА

def perfect_square(num):
    import math
    for number in range(1, num, 1):
        square = number ** 2
#             print(square, end='')
        print("the perfect squares from {} are: {}".format(num, square))

ВЫВОД ВЫШЕ

Enter a positive integer: 10
the perfect squares from 10 are: 1
the perfect squares from 10 are: 4
the perfect squares from 10 are: 9
the perfect squares from 10 are: 16
the perfect squares from 10 are: 25
the perfect squares from 10 are: 36
the perfect squares from 10 are: 49
the perfect squares from 10 are: 64
the perfect squares from 10 are: 81
The required output needs to look like this
Enter a positive integer: 10
The perfect squares for the number 10 are: 1, 4, 9

Вот новый код, а затем вывод, но над ним находится требуемый вывод, который я не могу понять. Спасибо всем за помощь.

    import math
    for number in range(1, num):
        if number ** .05 % 1 == 0:
            print("the perfect squares from {} are: {}".format(num, number))

ВЫХОД

Enter a positive integer: 10
the perfect squares from 10 are: 1

person ryley McCafferty    schedule 26.10.2019    source источник
comment
Просто основываясь на последнем предложении, вы просто хотите, чтобы все идеальные квадратные числа были меньше или равны входным данным?   -  person piokozi    schedule 27.10.2019
comment
Имейте в виду, что если вы используете очень большие числа, это займет очень много времени в python. Это достаточно простой алгоритм, чтобы вы могли воспроизвести его на скомпилированном языке, лишь немного изучив его в свободное время.   -  person piokozi    schedule 27.10.2019


Ответы (2)


Вот решение, которое не использует никаких библиотек:

def find_squares(x):
    return_value = []
    for i in range(1, x + 1):
        # Note that x**0.5 is the squareroot of x
        if i**0.5 % 1 == 0:
            return_value.append(i)
    return return_value

print(find_squares(int(input('Please enter a number: '))))
person Nicolas Forstner    schedule 26.10.2019

Это довольно простое упражнение: просто используйте for i in range(1, x+1), чтобы получить все числа, меньшие или равные x, которые являются идеальными квадратами.

Вот что я написал:

import math

def findSquares(x):
    for i in range(1, x+1):
        if math.sqrt(i).is_integer():
            print("one perfect number is: " + str(i))

Он просто перебирает соответствующие числа.

Другое решение таково:

import math

x = int(input("num?: "))
output = "The perfect squares for the number {} are: ".format(x) 
for i in range(1, x+1):
        if math.sqrt(i).is_integer():
                output += "{}, ".format(i)
print(output)

Это сделает пустой вывод и будет продолжать добавлять числа к нему, прежде чем он будет выводиться.

person piokozi    schedule 26.10.2019