我是jython的新手,我正在询问创建一个处理列表的函数。基本上我正在尝试使用以下函数创建一个函数,它将遍历我的整个列表,然后找到该列表中的最低值并返回具有最小数字的变量。虽然,每次执行main()时,我都会在函数min返回0x26 时,我会收到相同的消息,但好像函数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个条目):
70 75 76 49 73 76 52 63 11 25 19 89 17 48 五 48 29 41 23 84 28 39 67 48 97 34 0 24 47 98 0 64 24 51 45 11 37 77 五 54 53 33 91 0 27 0 80 五 11 66 45 57 48 25 72 8 38 29 93 29 58 五 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 五 6 60 81 51 62 87 70 66 50 三十 三十 22 45 35 2 39 23 63 35 69 83 84 69 6 54 74 3 29 31 54 45 79 21 74 三十 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 三十 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 三十 18 74 78 62 89 1 27 95 99 33 53 74 五 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 五 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 三十 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 五 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 五 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 三十 21 74 76 93 五 74 94 83 23 67 18 五 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 五 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 三十 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 三十 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
让我知道我做错了什么。谢谢!
答案 0 :(得分:1)
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)
修复此问题,您的程序将正常运行。干杯。