Передача в функцию меньшего количества аргументов, чем определено в Python - PullRequest
0 голосов
/ 21 июня 2020

Если у меня есть функция с несколькими функциями, скажем, вычисление площади или добавление трех чисел. Пользователь выбрал 1 для вычисления площади и 2 для добавления чисел через ввод

def func_calculate(numberOne, numberTwo, numberThree, userChoise):
    if userChoise == "1":
        calculate Area
        do something
    if userChoise == "2":
        calculate addition
        do something

userChoise - это ввод от пользователя

Если пользователь хочет вычислить площадь, вместо этого у функции есть только два аргумента из трех, если пользователь хочет добавить.

Итак, наконец, к вопросу ... Каков наиболее подходящий способ справиться с этим?

Когда я вызываю функцию, когда Пользователь хочет вычислить площадь, следует ли мне просто установить для переменной numberThree ноль или что-то в этом роде, или это более «правильный» способ сделать это?

if userChoie == "1":    
    inputNumberOne = input(...
    inputNumberTwo = input(...
    inputNumberThree == 0 
    func_calculate(inputNumberOne, inputNumberTwo, inputNumberThree, userChoise)

Ответы [ 3 ]

0 голосов
/ 21 июня 2020

Если вы действительно хотите использовать только одну функцию с переменным количеством параметров, вы можете использовать * args в качестве аргумента. Например:

def funct_calculate(*args):
    if len(args) == 2:
        Calculate Area
    else:
        Addition

funct_calculate(radius,pi)
funct_calculate(number1,number2,number3)
0 голосов
/ 21 июня 2020

Если вы не хотите выполнять несколько операций, лучше иметь разные функции для разных операций

choice = input("what user want's to do")

if choice == 1:
     add()
elif choice == 2: 
     multiply()

и принимать аргументы от пользователя для этих операций, например

def add():
      num1 = input("num1")
      num2 = input("num2")
      num3 = input("num3")
      print(num1 + num2 + num3)

и аналогично для других операций

Но если вам не нужно иметь несколько функций, вы можете сделать

def func(choice):
    #choice is the integer which user opted
    if choice == 1:
          num1 = input("num1")
          num2 = input("num2")
          num3 = input("num3")
          print(num1 + num2 + num3)
    elif choice == 2:
          .........
0 голосов
/ 21 июня 2020

Хороший подход к этой проблеме - иметь несколько функций, каждая из которых имеет свою c роль. Вы можете сделать две отдельные функции calculate_area() и add_numbers(). Затем вы можете просто проверить ввод и вызвать эти функции следующим образом:

userChoice = input("Enter choice: ")
if userChoice == "1":
    inputNumberOne = input("Enter number 1: ")
    inputNumberTwo = input("Enter number 2: ")
    calculate_area(inputNumberOne, inputNumberTwo)
elif userChoice == "2":
    inputNumberOne = input("Enter number 1: ")
    inputNumberTwo = input("Enter number 2: ")
    inputNumberThree = input("Enter number 3: ")
    add_numbers(inputNumberOne, inputNumberTwo, inputNumberThree)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...