Skip to main content
 首页 » 编程设计

python之无法计算列 python 的最小值/最大值/总和

2025年05月04日16lyj

我的代码可以计算提供的文件 alpha.txt 中每一行的最小值/最大值/总和,但它不能按列计算最小值/最大值/总和....任何关于如何做的想法都会有所帮助,谢谢!

def load_data(): 
 
    usrnput = input("Enter a filename ") 
    my_list = [[float(i) for i in line.split(',')] for line in open(usrnput, "+r")] 
 
 
    row = len(my_list) 
    column = len(my_list[0]) 
 
    if row != column: 
        print("invalid") 
    else: 
        pass 
 
    count = 0 
    for row in(my_list): 
        count = count + 1 
        print(count, row) 
 
 
 
    secondc = input("Enter a number ") 
    if secondc == '2': 
      minimum(my_list) 
    elif secondc =='3': 
        maximum(my_list) 
    elif secondc =='4': 
        sum1(my_list) 
 
def minimum(my_list): 
    pickaposition = input("Enter a row or column: ") 
    if pickaposition == ('1'): 
        print(min(my_list[0])) 
    elif pickaposition == ('2'): 
        print(min(my_list[1])) 
    elif pickaposition == ('3'):  
        print(min(my_list[2])) 
    elif pickaposition == ('4'): 
        print(min(my_list[3])) 
    elif pickaposition == ('5'): 
        print(min(my_list[4])) 
 
 
def maximum(my_list): 
    pickaposition = input("Enter a row or column: ") 
    if pickaposition == ('1'): 
        print(max(my_list[0])) 
    elif pickaposition == ('2'): 
        print(max(my_list[1])) 
    elif pickaposition == ('3'):  
        print(max(my_list[2])) 
    elif pickaposition == ('4'): 
        print(max(my_list[3])) 
    elif pickaposition == ('5'): 
        print(max(my_list[4])) 
 
def sum1(my_list): 
    pickaposition = input("Enter a row or column: ") 
    if pickaposition == ('1'): 
        print(sum(my_list[0])) 
    elif pickaposition == ('2'): 
        print(sum(my_list[1])) 
    elif pickaposition == ('3'):  
        print(sum(my_list[2])) 
    elif pickaposition == ('4'): 
        print(sum(my_list[3])) 
    elif pickaposition == ('5'): 
        print(sum(my_list[4])) 
 
def main(): 
    print("""1 - Open and load from a file 
2 - Minimum 
3 - Maximum  
4 - Sum  
5 - Delete 
6 - Save 
7 - Save as (specify new file name) 
0 - Exit 
""") 
    pick = input("Enter a number ") 
 
    if pick == "1": 
        load_data() 
    else: 
        pass 
 
 
 
 
 
main() 

alpha.txt 也包含数据

5,4,2,3.2 
1,.2,4.4,8 
3,8,6.5,2 
3,2,1,5.3 

我确实需要根据列分配变量 A-Z,但我也不知道该怎么做。

这是我的代码的完整示例运行,也许可以让您更轻松。

1 - Open and load from a file 
2 - Minimum 
3 - Maximum  
4 - Sum  
5 - Delete 
6 - Save 
7 - Save as (specify new file name) 
0 - Exit 
 
Enter a number 1 
Enter a filename alpha.txt 
1 [5.0, 4.0, 2.0, 3.2] 
2 [1.0, 0.2, 4.4, 8.0] 
3 [3.0, 8.0, 6.5, 2.0] 
4 [3.0, 2.0, 1.0, 5.3] 
Enter a number 3 
Enter a row or column: 3 
8.0 
>>>  

请您参考如下方法:

您的问题归结为:给定一个表示网格/矩阵的列表列表,您很容易提取一行,但如何提取列?

这是你如何做一行:

>>> a = [[5, 4, 3, 3.2], [1, .2, 4.4, 8], [3, 8, 6.5, 2], [3, 2, 1, 5.3]] 
>>> a[0] 
[5, 4, 3, 3.2] 

这是制作专栏的费力方法。请注意,第一个索引发生变化,但第二个索引没有。即,如果我们选择每一行的元素 2,我们将得到一列!

>>> column_two = [a[0][2], a[1][2], a[2][2], a[3][2]] 
>>> column_two 
[3, 4.4, 6.5, 1] 

您可以通过列表理解使这更容易。

>>> [x[2] for x in a] 
[3, 4.4, 6.5, 1] 
>>>  

这相当于做:

column_two = [] 
for row in a: 
    column_two.append(row[2]) 

在此之后,您可以重新使用现有函数并将提取的列而不是行传递给它们。