Функция, которая принимает аргументы в качестве ввода от пользователя - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь написать программу, которая принимает 2 ввода от пользователя.

  1. Расположение текстового файла, содержащего массив и
  2. Столбец в массиве.

Затем я хочу извлечь этот столбец из массива и выполнить над ним функции, используя мою собственную статистику модуля.

Я пытался установить переменную, например,

def arcol(fname, i):
    data = np.loadtxt(fname, usecols=i)
    return data

в функции, но ей не нравится кажущаяся строка 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)))

1 Ответ

0 голосов
/ 25 сентября 2018

Похоже, ваша проблема в том, что вы никогда не вызываете свои setInputN функции.Простое определение функции не делает ничего полезного, вы должны вызвать ее, чтобы получить возвращаемое значение.Я думаю, что вы хотите что-то вроде этого:

print(st.mean(arcol(setInput1(), setInput2())))

Я не проверял ваш код, поэтому может быть больше ошибок, таких как проблемы с типами ваших входных данных (как написано, обе функции вернутсястрок, но значение, которое вы используете в качестве второго аргумента для arcol, возможно, должно быть числом).

Также было бы неплохо выбрать более подходящие имена для ваших функций.Ни одна из функций setInputN не имеет описательного имени.arcol может быть немного лучше, но он настолько сокращен, что для меня как для человека, который ничего не знает о том, что он делает, ничего не значит.

Мне также интересно, действительно ли функции setInputNнеобходимо, так как они очень короткие и, вероятно, не будут вызываться из более чем одного места.Вы можете заменить вызовы каждой функции вызовами input напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...