#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])))