Как прочитать количество входных данных, приведенных в Python

#python #input

Вопрос:

Данный вопрос зависит от количества заданных входных данных (1 вход, 2 выхода или 3), определяющих длину окружности и периметра прямоугольника и треугольника. Кажется, я не могу понять, как считывать количество входных данных, например: если я даю только один вход, например:2, выход должен быть «12,56», а если я даю 2 входа, скажем, 2, 4, выход должен быть «6»(2*(a b)) до сих пор я закончил до функций, и я застрял на входах

 def cir(a):
    x=2*3.142*a
    return x
def rec(a,b):
    y=2*(int(a b))
    return y
def tri(a,b,c):
    z=a b c
    return z
a=b=c=0
print("enter the dimenssions")
a,b,c=float(input()),float(input()),float(input())
 

Комментарии:

1. Как вы хотите разделить входные данные? С пробелом?

2. Смотрите учебник по использованию нескольких входных данных в Python здесь .

3. @doctorlove да я хочу разделить входные данные пробелом

Ответ №1:

Если я правильно понимаю, это должно сработать (при условии, что вы хотите разделиться на пробел)

 def cir(a):
    x=2.0*3.142*float(a)
    return x
def rec(a,b):
    y=2*(float(a) float(b))
    
    return y
def tri(a,b,c):
    z=float(a) float(b) float(c)
    return z

#fun fact, you can put a string inside "input()" and it will have that right before you can type
userInput = input("Enter dimenssions: ")
userInput = userInput.split(" ")#Split the input on all  the spaces

numInputs = len(userInput)#Get how many numbers there are

if(numInputs == 1):
    print("Calculating for cir")
    print(cir(userInput[0]))
elif(numInputs == 2):
    print("Calculating for rect")
    print(rec(userInput[0], userInput[1]))
elif(numInputs == 3):
    print("Calculating for tri")
    print(tri(userInput[0], userInput[1], userInput[2]))
else:
    print("Error, you entered something wrong :(")

 

Тесты:

 Enter dimenssions: 5
Calculating for cir
31.419999999999998
 
 Enter dimenssions: 15 7
Calculating for rect
44.0
 
 Enter dimenssions: 10 2 7
Calculating for tri
19.0
 

Мне действительно пришлось изменить ваши функции периметра для того, как я это реализовал.

Ответ №2:

Воспользуйся str.split :

 def cir(a):
    return 2 * 3.142 * a
def rec(a, b):
    return 2 * (a   b)
def tri(a, b, c):
    return a   b   c

funcs = {1: cir, 2: rec, 3: tri}

try:
    inputs = list(map(float, input("Please give floats space separated ").split()))
except ValueError:
    print("Values must be floats")

try:
    func = funcs[len(inputs)]
    print(f"Using {func.__name__}")
    print(func(*inputs))
except IndexError:
    print("Too many inputs given must be 3 or less")
 

 Please give floats space separated 1
Using cir
6.284

Please give floats space separated 1 2
Using rec
6.0

Please give floats space separated 1 2 3
Using tri
6.0
 

Ответ №3:

Мы здесь

 def cir(a):
    x=2*3.142*a
    return x
def rec(a,b):
    y=2*(int(a b))
    return y
def tri(a,b,c):
    z=a b c
    return z

l_input = [float(x) for x in input("Input values:").split()]

print("Input = {}".format(l_input))

if len(l_input) == 1:
    print(cir(*l_input))
elif len(l_input) == 2:
    print(rec(*l_input))
elif len(l_input) == 3:
    print(tri(*l_input))
 

Пример вывода:

 Input values:1
Input = [1.0]
6.284


Input values: 1 2
Input = [1.0, 2.0]
6

Input values: 1 2 3 
Input = [1.0, 2.0, 3.0]
6.0
 

Ответ №4:

может быть,вместо «a,b,c=float(вход ()), float(вход ()), float(вход())» что-то вроде этого:

 param = input().split()
if len(param) == 1:
    print(cir(float(param[0])))
elif len(param) == 2:
    print(rec(float(param[0]), float(param[1])))
elif len(param) == 3:
    print(tri(float(param[0]), float(param[1]), float(param[2])))