Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [Python] ExitStack với rollback có điều kiện

    Viết @contextmanager resource(name) khi enter in open <name>, khi exit in close <name>. Đọc N tên tài nguyên và cờ commit (0/1). Dùng ExitStack mở tất cả; nếu commit=0, gọi stack.pop_all().close() ngay trước khi raise SystemExit? KHÔNG. Thay vào đó: nếu commit=1, in commit trước khi exit; nếu commit=0, in rollback trước khi exit. Sau đó để stack tự đóng theo LIFO.

    • Định dạng đầu vào:

      Dòng đầu N commit. N dòng sau mỗi dòng một name.

    • Ràng buộc đầu vào:

      1 <= N <= 100, commit in {0,1}.

    • Định dạng đầu ra:

      open theo thứ tự, một dòng commit hoặc rollback, rồi close theo thứ tự ngược.

    Ví dụ:

    Đầu vào:

    2 1
    DB
    File
    

    Đầu ra:

    open DB
    open File
    commit
    close File
    close DB

    Giải thích:

    open DB / open File / commit / close File / close DB.

    Đang tải editor...