Đọc mảng 2 chiều từ file trong python

Cho file mang2.in như sau:

Trong đó: Dòng thứ nhất là 2 số nguyên dương m, n cách nhau bở một khoảng trắng. n dòng tiếp theo, mỗi dòng gồm m số nguyên cách nhau bởi một khoảng trắng tạo thành mảng ma có m cột, n dòng.

(mảng ma gồm 4 cột 5 dòng)

Yêu cầu:

a. Đọc dữ liệu từ file mang2.in và in ra màn hình mảng ma.

b. Tính tổng đường chéo của mảng gồm m dòng đầu tiên của mảng ma. (tong = 11+3+99+10 = 123)

Bài làm

with open('mang2.IN')as fi:

m,n = list(map(int,fi.readline().split()))

ma.append(list(map(int,fi.readline().split())))

if i == j: tong += ma[i][j]

Giải thích:

Đọc dữ liệu vào

m,n = list(map(int,fi.readline().split()))

Lệnh này sử dụng phương thức .split() để tách xâu bởi các khoảng trắng tạo thành list. Như vậy, với dòng đầu của file mang2.in là 4 5 ta dùng lệnh fi.readline().split()) và thu được dữ liệu vào là ['4', '5'].

Nếu ta dùng m,n = fi.readline().split() thì m được gán bằng '4' và n được gán bằng '5'. Lúc này m,n có kiểu dữ liệu là string.

Để chuyển dữ liệu từ string sang int ta có thể ép kiểu cho từng biến. Tuy nhiên như thế sẽ làm cho code dài và khó đọc. Trong bài này ta chuyển dữ liệu string sang int bằng hàm map(). m,n = list(map(int,fi.readline().split()))

Để dễ hiểu hơn ta xét ví dụ sau:

# Tách xâu s thành list a

# in mảng a ta có: ['1', '2', '3'].

#(lúc này các phần tử là string)

# Chuyển các phần tử của mảng a thành kiểu int

# in mảng a ta có: [1, 2, 3]

Published: 09 February 2019 |

Hits: 21738

Mời các bạn download tại: Click here

# Lam viec voi mang 2 chieu

m = int(input("Nhap m = "))
n = int(input("Nhap n = "))

a = []

for i in range(0, m):
    a.append([])
    for j in range(0, n):
        x = float(input("Nhap phan tu thu a[%2d][%2d]: " % (i+1, j+1)))
        a[i].append(x)

print("Day so vua nhap la: ")
for i in range(0, m):
    for j in range(0, n):
        print("%3d " % a[i][j], end='')
    print()

"""
# Cách 2:
print("Day so vua nhap la: ")
print(a)
"""

    

Đọc mảng 2 chiều từ file trong python

Đọc mảng 2 chiều từ file trong python

Làm thế nào để đọc file chứa dữ liệu là mảng 2 chiều các số nguyên trong C?

Mình có một tập tin dulieu.txt có nội dung như sau:

4
1 2 3 4
5 0 8 2
9 3 8 1
7 8 0 0

Với dòng đầu là số phần tử của mảng.

Các dòng còn lại là giá trị của mảng, làm sao để đọc file dữ liệu này và lưu nó vào mảng 2 chiều trong C ạ? Xin cảm ơn.

Ý tưởng là khởi tạo một con trỏ file, dùng nó để đọc dòng đầu tiên, bạn sẽ lưu được số lượng phần tử của mảng vào một biến n nào đó. Sau đó tạo vòng lặp for với điều kiện dừng là n, sử dụng vòng lặp for này để tiếp tục đọc các giá trị còn lại từ file và lưu chúng vào mảng là xong.

#include <stdio.h>

int main() {
    int A[100][100];
    int n;

    FILE *f = fopen("dulieu.txt", "r");

    fscanf(f, "%d", &n);

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            fscanf(f, "%d", &A[i][j]);
        }
    }


    // In ra màn hình Console
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            printf("%5d", A[i][j]);
        }
        printf("\n");
    }
    printf("\n");
}

đã đăng 3.8 năm trước bởi

đã bổ sung 3.8 năm trước bởi

Bạn chưa đăng nhập, vui lòng đăng nhập để thêm câu trả lời.

Bạn đang thắc mắc? Ghi câu hỏi của bạn và đăng ở chế độ cộng đồng (?)