无法 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)
解决这个问题,您的程序就会运行。干杯。
我是 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)
解决这个问题,您的程序就会运行。干杯。