Невозможно вернуть правильный вывод из созданной функции в JES

Я новичок в jython, и мне интересно создать функцию, которая работает со списком. В основном то, что я пытаюсь сделать с помощью приведенной ниже функции, - это создать функцию, которая будет перебирать весь мой список, затем находить наименьшее значение в этом списке и возвращать переменную с наименьшим числом. Хотя я продолжаю получать возврат функции min по адресу 0x26 каждый раз, когда я выполняю main(), я получаю одно и то же сообщение, но кажется, что функция min по адресу 0x26 будет учитываться up ex: 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))

Вот код целиком. Хотя в настоящее время у меня есть способ найти минимальные/максимальные значения в списке. Я хочу перейти к функции, так как хочу знать, как правильно использовать функцию.

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.

Как упоминалось выше, существует цикл for для нахождения максимальных/минимальных значений. Хотя я пытался сделать то же самое для функции, которую я пытаюсь создать...

содержимое numbs.dat можно найти здесь (1001 запись):

Дайте мне знать, что, черт возьми, я делаю неправильно. Спасибо!

@ohGosh добро пожаловать в переполнение стека. Вы почти у цели. Есть несколько проблем с вашей программой


person ohGosh    schedule 10.11.2017    source источник
comment
Я загрузил весь код, а также содержимое отдельного файла, необходимого для списка.   -  person mzjn    schedule 10.11.2017
comment
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 04 7 53 03 33 91 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 7 5 8 0 9 57 8 27 14 24 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 53 7 4 69 83 8 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 92 3 9 1 5 3 9 4 87 1 34 8 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 7 5 26 154 18 84 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 40 3 8 97 2 93 13 11 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 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 6 9 8 4 9 3 2 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 2 4 7 3 1 8 91 90 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 75 68 56 45 11 1 6 5 6 0 69 9 9 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 2 3 7 7 10 84 2 5 7 1 89 3 13 4 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 3 77 1 7 8 8 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 7 39 3 8 97 7 92 8 97 94 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 359 14 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 7 7 1 1 7 8 4 3 4 4 71 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 7 2 3 0 8 5 6 1 4 4 4 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 57 7 1 595 7 1 595 42 2 83 26 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 6 7 7 9 4 1 8 51 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 7 14 19 25 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 7 7 93 54 4 8 4 6 8 4 52 88 55 24 19 92 53 59 1 91 48 47   -  person ohGosh    schedule 11.11.2017


Ответы (1)


1) Файл Nums.dat содержит только одну строку с числами, разделенными пробелами, а не новую строку (\n). Чтобы получить прочитанные числа из файла, выполните следующие действия.

2) Неправильный способ получения данных из списка в функции min

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

Использовать

Вместо

min = dataset[num]

Исправьте это, и ваша программа заработает. Ваше здоровье.

min = dataset(num)

Это не полный код. Мы не можем его запустить. Отступ тоже выглядит плохо. Предоставьте минимально воспроизводимый пример.

person htopiwala    schedule 11.11.2017