无法 return 更正 JES 中创建的函数的输出

Unable to return correct output from created function in JES

我是 jython 的新手,我想了解如何创建一个处理列表的函数。基本上我想用下面的函数做的是创建一个函数,它将循环遍历我的整个列表,然后找到该列表中的最小值和 return 具有最小数字的变量。虽然,每次执行 main() 时,我都会在 0x26 收到 function min 的 return 我收到相同的消息,但似乎 function 0x26 处的最小值将向上计数 例如:0x27、0x28... 不确定这是为什么。因为我的列表只包含最小 0 到最大 99 的整数。

这是源代码:

def min(dataset): #defining a function minimum, with input dataset(the list we are using)..
    min = dataset[0]
    for num in range(0, len(dataset)):
      if dataset[num] < min:
        min = dataset(num)
    return min
    minimum = min(dataset)
    print(str(minimum))

这是完整的代码。不过,我目前有办法在列表中找到 min/max 值。我希望转向一个函数,因为我想知道如何正确使用一个函数。

def main( ):
  dataset = [0]
  file = open("D:\numbs.dat", "r")
  for line in file: #loop for writing over every line to a storage loc.
    num = int(float(line)) #converting int to string
    dataset.append(num) #appending the data to 'dataset' list
  max = dataset[0] #setting an imaginary max initially
  low = dataset[0] #setting an imaginary low initially
  for i in range(0, len(dataset)): #for loop to scan thru entire list
    if dataset[i] > max: #find highest through scan and replacing each max in var max
      max = dataset[i]
    if dataset[i] < low: #find lowest through scan and replacing each max in var max
      low = dataset[i]
  #printNow(dataset) #printing the list in its entirety
  #printNow("The maximum is " +str(max)) #print each values of lowest and highest
  #printNow("The lowest is " +str(low))

  def min(dataset): #defining a function minimum..
    min = dataset[0]
    for num in range(0, len(dataset)):
      if dataset[num] < min:
        min = dataset(num)
    return min
    minimum = min(dataset)


  print(str(minimum)) #test to see what output is.

如上所述,有用于查找 max/min 值的 for 循环。尽管我尝试为我要创建的函数做同样的事情...

可在此处找到 numbs.dat 的内容(1001 个条目):

70 75 76 49 73 76 52 63 11 25 19 89 17 48岁 5个 48岁 29 41 23 84 28 39 67 48岁 97 34 0 24 47 98 0 64 24 51 45 11 37 77 5个 54 53 33 91 0 27 0 80 5个 11 66 45 57 48岁 25 72 8个 38 29 93 29 58 5个 72 36 94 18 92 17 43 82 44 93 10 38 31 52 44 10 50 22 39 71 46 40 33 51 51 57 27 24 40 61 88 87 40 85 91 99 6个 3个 56 10 85 38 61 91 31 69 39 74 9 17 80 96 49 0 47 68 12 5个 6个 60 81 51 62 87 70 66 50 30 30 22 45 35 2个 39 23 63 35 69 83 84 69 6个 54 74 3个 29 31 54 45 79 21 74 30 77 77 80 26 63 84 21 58 54 69 2个 50 79 90后 26 45 29 97 28 57 22 59 2个 72 1个 92 35 38 2个 47 23 52 77 87 34 84 15 84 13 23 93 19 50 99 74 59 4个 73 93 29 61 8个 45 10 20 15 95 58 43 75 19 61 39 68 47 69 58 88 82 33 30 72 21 74 12 18 0 52 50 62 21 66 26 56 84 16 12 7 45 58 22 26 95 82 6个 74 12 16 2个 61 58 22 39 0 53 88 79 71 13 54 25 31 93 48岁 91 90后 45 23 54 42 39 78 25 95 58 2个 41 61 72 98 91 48岁 97 93 11 12 1个 35 80 81 86 38 70 67 55 55 87 73 79 31 43 97 79 3个 51 17 58 70 34 59 61 28 46 13 42 18 0 18 75 75 62 50 62 85 49 83 71 63 32 27 59 42 46 8个 13 39 25 13 94 17 48岁 73 40 31 31 86 23 81 40 92 24 94 67 30 18 74 78 62 89 1个 27 95 99 33 53 74 5个 84 88 8个 52 0 24 21 99 1个 74 84 94 29 25 83 93 98 40 21 66 93 28 72 63 77 9 71 18 87 50 77 48岁 68 88 22 33 16 79 68 69 94 64 5个 28 33 22 21 74 44 62 68 47 93 69 9 42 44 87 64 97 42 34 90后 70 91 12 18 84 65 23 99 1个 55 6个 1个 23 92 50 96 96 68 27 17 98 42 10 27 26 20 13 94 73 75 12 12 25 33 1个 33 67 61 0 98 71 35 75 68 56 45 11 1个 69 57 9 15 96 69 2个 0 65 44 86 78 97 17 4个 81 23 4个 43 24 72 70 57 21 91 84 94 40 96 40 78 46 67 6个 7 16 49 24 14 12 82 73 60 42 76 62 10 84 49 75 89 43 47 31 68 15 11 32 37 98 72 40 25 69 30 64 60 48岁 21 11 74 54 24 60 10 96 29 39 53 48岁 24 68 4个 52 12 6个 91 15 86 77 65 68 22 91 36 72 82 81 9 77 0 5个 83 27 88 17 35 66 76 78 81 19 51 87 66 26 59 65 2个 37 37 73 34 98 37 78 92 17 52 62 40 50 84 34 22 25 42 90后 19 86 76 68 42 9 89 57 78 64 89 12 34 94 9 77 58 32 27 97 93 79 35 32 75 97 79 65 90后 53 43 98 4个 99 5个 79 38 99 60 78 64 90后 2个 39 42 52 2个 21 77 15 8个 87 13 0 4个 7 43 76 31 74 16 87 50 73 49 14 35 10 37 91 44 88 71 95 75 98 7 17 23 13 16 77 20 50 50 74 78 58 30 21 74 76 93 5个 74 94 83 23 67 18 5个 50 47 56 79 26 84 78 48岁 71 43 41 8个 91 23 7 11 96 87 12 42 32 44 99 67 99 64 96 52 19 79 60 66 52 62 17 61 54 24 25 36 4个 78 3个 94 91 62 65 76 94 2个 52 25 61 55 49 88 85 96 5个 46 56 48岁 17 25 3个 70 62 3个 50 45 47 58 12 41 27 42 90后 91 71 53 4个 79 47 68 43 87 35 63 10 49 4个 81 45 88 80 6个 92 47 70 40 7 33 70 61 30 9 55 42 83 26 72 57 77 91 13 15 33 13 62 49 43 65 73 98 59 56 77 62 12 25 33 53 78 73 1个 17 44 56 95 10 33 89 33 20 56 69 66 60 53 83 58 43 33 25 21 8个 28 65 51 70 53 78 49 30 64 17 76 9 2个 32 87 77 39 25 21 66 65 54 81 49 15 27 7 14 4个 11 94 9 84 23 13 95 45 67 57 20 3个 58 50 97 35 68 47 41 84 59 46 34 19 25 77 29 41 89 80 61 70 40 1个 18 32 70 86 76 25 98 99 40 43 92 43 4个 70 78 72 71 85 14 84 73 92 60 23 57 44 56 6个 96 39 91 63 43 39 71 80 18 93 54 1个 4个 46 68 93 74 74 88 52 88 55 24 19 92 53 59 1个 91 48岁 47

让我知道我到底做错了什么。谢谢!

@ohGosh 欢迎来到堆栈溢出。您几乎已经有了解决方案。您的程序几乎没有问题

1) Nums.dat 文件只包含一行由空格分隔的数字,而不是换行符 (\n)。为了从文件中读取数字,请执行以下操作

dataset = []                          #Create an empty list
file = open("D:\numbs.dat", "r")      #Open the file
for line in file:
     tempData = line.split(" ")       #Returns a list with space used as delimiter
     dataset = map(int, tempData)     #Convert string data to int

2) 在 min 函数中从列表中获取数据的方式错误

使用

min = dataset[num]

而不是

min = dataset(num)

解决这个问题,您的程序就会运行。干杯。