将参数作为用户输入的函数

时间:2018-09-25 02:07:26

标签: python function

我正在尝试编写一个程序,该程序需要用户输入2次。

  1. 包含数组和
  2. 的文本文件的位置
  3. 数组中的一列。

然后我想从数组中提取该列,并使用我自己的模块统计信息对其执行功能。

我尝试设置变量,即

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 :(得分:1)

您的问题似乎是您从未调用过setInputN函数。仅仅定义一个函数并没有任何用处,您必须调用它以获取其返回值。我想您想要这样的东西:

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

我尚未测试您的代码,因此可能会有更多错误,例如输入数据的类型出现问题(如所写,这两个函数都将返回字符串,但是您用作{{的第二个参数的值1}}可能需要是一个数字。

为功能选择更好的名称也是一个好主意。 arcol函数均没有描述性名称。 setInputN可能会更好一些,但是它是如此的缩写,对我来说并不意味着什么,因为对于它的作用一无所知的人。

我还想知道是否真的需要arcol函数,因为它们很短并且可能不会在多个地方调用。您可以通过直接调用setInputN来替换对每个函数的调用。