Chương trình lấy tên của một tệp từ người dùng và in tất cả các số có trong tệp văn bản Show Giải pháp vấn đề 1. Lấy tên tệp từ người dùng Chương trình/Mã nguồn Đây là mã nguồn của Chương trình Python để in tất cả các số có trong tệp văn bản. Đầu ra chương trình cũng được hiển thị bên dưới Chương trình ví dụ dưới đây trình bày những kiến thức cơ bản về cách làm việc với dữ liệu đến từ tệp văn bản. Chương trình được thiết kế để hoạt động với một tệp văn bản chứa danh sách các bài đọc nhiệt độ. Các bài đọc được liệt kê một trên mỗi dòng trong tệp văn bản. Chương trình sẽ đọc danh sách các giá trị đọc từ tệp văn bản, đặt các giá trị đọc vào một danh sách, sau đó xác định và in các giá trị nhiệt độ thấp nhất và cao nhất được tìm thấy trong tệp temps = [] f = open('temps.txt') for line in f.readlines(): temps.append(float(line)) f.close() lowest = temps[0] highest = temps[0] for t in temps: if t < lowest: lowest = t if t > highest: highest = t print('Lowest temp = '+str(lowest)) print('Highest temp = '+str(highest)) Sau đây là một số điều cần lưu ý trong chương trình
Vì chúng tôi luôn phải cẩn thận để đóng tệp sau khi làm việc xong với tệp, nên có thể hữu ích khi sử dụng một cấu trúc thay thế để quản lý việc mở và đóng tệp. Cấu trúc Python f = open('temps.txt') for line in f.readlines(): temps.append(float(line)) f.close()5 hữu ích cho mục đích này thay cho f = open('temps.txt') for line in f.readlines(): temps.append(float(line)) f.close() chúng tôi có thể làm with open('temps.txt') as f: for line in f.readlines(): temps.append(float(line)) Khi chúng tôi thoát khỏi phần thân của cấu trúc with, tệp sẽ tự động được đóng cho chúng tôi. Ngoài ra, nếu chương trình phát sinh lỗi ở bất kỳ đâu trong phần thân chương trình sẽ tự động thoát khỏi phần thân của with và đóng file lại cho chúng ta Viết vào một tập tinVí dụ tiếp theo là một chương trình ngắn mà tôi đã sử dụng để tạo một số dữ liệu ngẫu nhiên cho nhân viên tạm thời. tệp dữ liệu txt ________số 8_______Dưới đây là một số điều cần lưu ý trong chương trình này
Chức năng đọc dữ liệu chungTrong một vài ví dụ tiếp theo, chúng ta sẽ đọc dữ liệu từ tệp văn bản. Trong mọi trường hợp, dữ liệu sẽ được sắp xếp thành một chuỗi dữ liệu với danh sách các mục dữ liệu trên mỗi dòng của tệp. Hàm Python sau đây sẽ đóng vai trò là chức năng đọc dữ liệu chung để tải dữ liệu thô từ tệp văn bản. Hàm đọc các dòng riêng lẻ của tệp đầu vào dưới dạng chuỗi văn bản, sau đó sử dụng phương thức chuỗi with open('temps.txt') as f: for line in f.readlines(): temps.append(float(line))3 để tách từng dòng thành một danh sách các chuỗi cho các mục dữ liệu riêng lẻ def readData(fileName): """Generic data reading function: reads lines in a text file and splits them into lists.""" data = [] with open(fileName) as f: for line in f.readlines(): data.append(lineToData(line.split())) return data Bước tiếp theo thường là chuyển đổi các chuỗi trong danh sách dữ liệu của chúng tôi thành định dạng dữ liệu phù hợp với ứng dụng cụ thể của chúng tôi. Ví dụ, trong chương trình ví dụ tiếp theo bên dưới, chúng ta sẽ sao chép ví dụ hồi quy tuyến tính mà tôi đã trình bày một vài bài giảng trước đây. Chúng tôi sẽ làm việc với một tệp đầu vào trông như thế này 1935 32.1 1940 30.5 1945 24.4 1950 23 1955 19.1 1960 15.6 1965 12.4 1970 9.7 1975 8.9 1980 7.2 Mục nhập đầu tiên trong danh sách dữ liệu được trả về bởi lệnh gọi tới with open('temps.txt') as f: for line in f.readlines(): temps.append(float(line))3 trong readData sẽ giống như ["1935","32.1"] Tôi muốn chuyển đổi cặp chuỗi đó thành một bộ chứa tổ hợp số nguyên và số float. Đây là một chức năng làm sạch dữ liệu đơn giản có thể thực hiện chuyển đổi đó def lineToData(line) """Converts a raw line list into an appropriate data format.""" return (int(line[0]),float(line[1])) Sau đó, with open('temps.txt') as f: for line in f.readlines(): temps.append(float(line))5 sẽ sử dụng hàm with open('temps.txt') as f: for line in f.readlines(): temps.append(float(line))6 này để đưa dữ liệu vào định dạng mà chúng tôi cần pairs = readData('farm.txt') Chương trình hồi quy tuyến tínhBây giờ đây là chương trình đọc dữ liệu dân số trang trại và thực hiện phân tích hồi quy trên dữ liệu. Lưu ý các định nghĩa hàm giúp chúng ta thực hiện các phần chính của tính toán hồi quy def lineToData(line): """Converts a raw line list into an appropriate data format.""" return (int(line[0]), float(line[1])) def readData(fileName): """Generic data reading function: reads lines in a text file and splits them into lists.""" data = [] with open(fileName) as f: for line in f.readlines(): data.append(lineToData(line.split())) return data def means(pairs): xSum = 0 ySum = 0 for x, y in pairs: xSum += x ySum += y N = len(pairs) return xSum / N, ySum / N def covariance(pairs, means): sum = 0 for x, y in pairs: sum += (x - means[0]) * (y - means[1]) return sum def xVariance(pairs, xMean): sum = 0 for x, y in pairs: sum += (x - xMean) * (x - xMean) return sum def regressionCoeffs(pairs): """Computes linear regression coefficients (a,b) from a list of (x,y) pairs.""" m = means(pairs) beta = covariance(pairs, m) / xVariance(pairs, m[0]) alpha = m[1] - beta * m[0] return (alpha, beta) pairs = readData('farm.txt') a, b = regressionCoeffs(pairs) for x, y in pairs: prediction = a + x * b print('Year: {:d} Prediction: {:5.2f} Actual: {:5.2f}'.format(x, prediction, y)) Đầu ra được sản xuất bởi chương trình này là f = open('temps.txt') for line in f.readlines(): temps.append(float(line)) f.close()0 Điều này có vẻ phù hợp với hồi quy tuyến tính bài tập lập trìnhViết chương trình Python đọc hai danh sách số nguyên từ tệp có tên 'một. txt' và 'hai. txt' và sau đó xác định số nào từ tệp đầu tiên không xuất hiện trong tệp thứ hai. Tạo danh sách các số này và sau đó viết danh sách ra tệp thứ ba có tên 'diff. txt' Để gửi tác phẩm của bạn để chấm điểm, hãy nén toàn bộ thư mục dự án của bạn vào một kho lưu trữ ZIP và gửi cho tôi kho lưu trữ đó dưới dạng tệp đính kèm trong một email |