灵活处理文件中的数据,并计算列和行的最小值

68 阅读2分钟

您正在处理一个项目,需要从文本文件中加载数据,并根据用户的选择计算列或行的最小值。当前的代码仅限于处理固定大小(4x4)的数据,您需要扩展代码以处理不同大小的数据集。

2、解决方案

为了扩展代码以处理不同大小的数据集,您可以按以下步骤进行:

  1. 加载数据: 使用 open() 函数打开文本文件,并逐行读取数据。您可以使用 split() 函数将每一行数据按逗号分隔,并使用 float() 函数将字符串转换为浮点数。
  2. 创建列表: 将加载的数据存储在一个列表中。列表中的每一个元素都是一个子列表,代表一行数据。
  3. 确定数据大小: 使用 len() 函数确定列表中子列表的数量,作为行数。然后使用 len(list[0]) 确定每一行中元素的数量,作为列数。
  4. 创建字典: 使用 dict() 函数创建一个字典,其中键是列号(从 1 到列数),值是列数据。
  5. 用户输入: 使用 input() 函数获取用户输入。用户可以选择一个列号或行号,也可以选择计算最小值、最大值或和。
  6. 计算结果: 根据用户的选择,计算列或行的最小值、最大值或和。您需要使用 min(), max()sum() 函数。
  7. 输出结果: 将计算结果打印到控制台。

以下是一个Python代码示例,演示如何实现上述步骤:

def main():
    # 加载数据
    with open("userinput.txt") as file:
        data = [[float(i) for i in line.split(',')] for line in file]

    # 确定数据大小
    num_rows = len(data)
    num_cols = len(data[0])

    # 创建字典
    columns = {}
    for i in range(1, num_cols + 1):
        columns[i] = [row[i - 1] for row in data]

    # 用户输入
    while True:
        choice = input("Enter a row or column (1-{}, or R), or 'M', 'X', or 'S' for min, max, or sum: ".format(num_cols))

        # 计算结果并输出
        if choice.isdigit():
            if int(choice) <= num_cols:
                print(min(columns[int(choice)]))
            else:
                print("Invalid input. Please enter a valid row or column number.")
        elif choice.upper() == 'R':
            row_number = input("Enter the row number (1-{}): ".format(num_rows))
            if int(row_number) <= num_rows:
                print(min(data[int(row_number) - 1]))
            else:
                print("Invalid input. Please enter a valid row number.")
        elif choice.upper() == 'M':
            min_value = float('inf')
            for column in columns.values():
                min_value = min(min_value, min(column))
            print("Minimum value:", min_value)
        elif choice.upper() == 'X':
            max_value = float('-inf')
            for column in columns.values():
                max_value = max(max_value, max(column))
            print("Maximum value:", max_value)
        elif choice.upper() == 'S':
            sum_value = 0
            for column in columns.values():
                sum_value += sum(column)
            print("Sum of all values:", sum_value)
        else:
            print("Invalid input. Please enter a valid choice.")

        # 询问是否继续
        if input("Continue? (Y/N): ").upper() == 'N':
            break

if __name__ == "__main__":
    main()

通过使用字典存储列数据,您可以轻松地处理不同大小的数据集。用户可以通过输入列号或行号来选择需要计算的数据,也可以选择计算最小值、最大值或和。