Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 5, 2021 02:42:38

isd2020
Зарегистрирован: 2021-01-05
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Функция возвращает Input значение:

Добрый день, есть задача написать скрипт который определяет число Простое или нет.
Скрипт работает:

a = int(input(“Enter the number: ”))
k = 0
for i in range(2, a // 2+1):
if (a % i == 0):
k = k+1
if (k <= 0):
print(“Prime Number”)
else:
print(“Not prime number”)

Но при попытке создать функцию на основе - все перестает работать, компилятор разрешает ввести значение и просто его же возвращает…
Функция:

def prime_number(a,k):
a = int(input(“Enter the number: ”))
k = 0
for i in range(2, a // 2+1):
if (a % i == 0):
k = k+1
if (k <= 0):
print(“Prime Number”)
else:
print(“Not prime number”)

Подскажите что не так пожалуйста…. использую repl.it

Прикреплённый файлы:
attachment function.PNG (48,9 KБ)

Офлайн

#2 Янв. 5, 2021 04:28:09

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9882
Репутация: +  853  -
Профиль   Отправить e-mail  

Функция возвращает Input значение:

Функцию нужно вызвать.



Офлайн

#3 Янв. 5, 2021 04:29:04

isd2020
Зарегистрирован: 2021-01-05
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Функция возвращает Input значение:

Спасибо … а подскажите как на данном примере?

Офлайн

#4 Янв. 5, 2021 06:40:01

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9882
Репутация: +  853  -
Профиль   Отправить e-mail  

Функция возвращает Input значение:

isd2020
а подскажите как на данном примере?
Прямо на этом примере без его исправления
  
def prime_number(a,k):
    a = int(input("Enter the number: "))
    k = 0
    for i in range(2, a // 2+1):
        if (a % i == 0):
            k = k+1
    if (k <= 0):
        print("Prime Number")
    else:
        print("Not prime number")
 
prime_number(1, 1)

  
>>> def prime_number(a,k):
...     a = int(input("Enter the number: "))
...     k = 0
...     for i in range(2, a // 2+1):
...         if (a % i == 0):
...             k = k+1
...     if (k <= 0):
...         print("Prime Number")
...     else:
...         print("Not prime number")
... 
>>> prime_number(1, 1)
Enter the number: 13
Prime Number
>>> prime_number(1, 1)
Enter the number: 12
Not prime number
>>>

А так если смотреть, смысл в аргументах у функции, если ты их перезаписываешь внутри? Можно тогда вообще их убрать из функции и оставить только их ввод внутри функции. Получится процедура без аргументов.

Но лучше сделать так, чтобы в функцию подавались аргументы, она их брала и на их основе возвращала True или False. А уже снаружи функции аргументы сначала вводятся, потом подаются в функцию, а потом по True/False из функции также снаружи функции делается вывод.

Таким образом у тебя должно быть четыре функции: функция ввода аргументов; функция определения простоты числа; функция вывода на экран сообщения; и функция, которая связывает три перечисленные функции воедино.

Вот так это выглядит
  
>>> def input_number():
...     number = int(input('Enter number: '))
...     return number
... 
>>> def is_prime_number(number):
...     if number == 13:
...         return True
...     if number == 12:
...         return False
... 
>>> def print_number_result(number, is_prime):
...     if is_prime:
...         print("The number", number, "is prime")
...     else:
...         print("The number", number, "is not prime")
... 
>>> def process_all():
...     number = input_number()
...     result = is_prime_number(number)
...     print_number_result(number, result)
... 
>>> process_all()
Enter number: 13
The number 13 is prime
>>> process_all()
Enter number: 12
The number 12 is not prime
>>>



Отредактировано py.user.next (Янв. 5, 2021 06:54:15)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version