Я пытаюсь написать программу, которая принимает 2 входа от пользователя.
Затем я хочу извлечь этот столбец из массива и выполнить на нем функции, используя мою собственную статистику модуля.
Я попытался установить переменную, т.е.
def arcol(fname, i):
data = np.loadtxt(fname, usecols=i)
return data
в функции, но это не похоже на то, что для usecols
строк используются usecols
.
Вот код, который у меня есть, ошибка заключается в том, что переменные в print()
не определены.
import numpy as np
import stats as st
def setInput1():
fname = input("Please enter file location/path:")
return fname
def setInput2():
i = input("Please enter the desired column in the array:")
return i
def arcol(fname, i):
return np.loadtxt(fname, usecols= i)
print(st.mean(arcol(fname, i)))
Похоже, ваша проблема в том, что вы никогда не вызываете свои функции setInputN
. Простое определение функции ничего не полезно, вы должны вызвать ее, чтобы получить ее возвращаемое значение. Я думаю, вам нужно что-то вроде этого:
print(st.mean(arcol(setInput1(), setInput2())))
Я не тестировал ваш код, поэтому может быть больше ошибок, например, проблем с типами ваших входных данных (как написано, обе функции возвращают строки, но значение, которое вы используете в качестве второго аргумента для arcol
возможно, должно быть число).
Также было бы неплохо выбрать лучшие имена для ваших функций. Ни одно из функций setInputN
не имеет описательного имени. arcol
, может быть, немного лучше, но он настолько сокращен, что на самом деле это ничего не значит для меня, как для кого-то, кто ничего не знает о том, что он делает.
Я также задаюсь setInputN
, действительно setInputN
функции setInputN
необходимы, поскольку они очень короткие и, вероятно, не будут вызываться из более чем одного места. Вы могли бы заменить вызовы каждой функции вызовов на input
непосредственно.
arcol
предполагает, что это int. Попробуй,i = int(i)
. Кроме того, вы не показываете, где вызываете функции, поэтому без работоспособного примера трудно сказать, что происходит.i
илиfname
вы проходящие вprint(st.mean(arcol(fname, i)))
, так что, очевидно , вы получите ошибку , говорящие вам , что они не определены