Viết `Fraction(3, 9)` trên code Python không thấy hiện kết quả

Hic mình cũng là newbie đang mới học về python cũng đang thắc mắc vấn đề này. Ai có cách giải quyết giúp mình không?? Bên trái là IDLE có hiện ra kết quả hàm rút gọn phân số (3/9 =1/3), bên phải là sublime text không hiện gì ?(Phần console ở dưới chỉ hiện [Finish in 0.2s])

Câu hỏi của bạn giống hệt 1 bạn đã hỏi. Bạn đọc cmt của mình nhé.

2 Likes

hì mình cũng hiểu ý bạn rồi, vậy là không có cách nào để sublime text hiện lên được như interactive mode của IDLE đúng không? Mình có xem trên stackoverflow thì có thấy họ bảo dùng plugin SublimeREPL cài về rồi dùng thì mình thấy y hệt như của IDLE

Muốn hiện lên cái gì thì bạn phải in nó ra nhé.

3 Likes

mình hiểu rồi :)) tks bạn :slight_smile: biết hỏi hơi ngu nhưng vẫn muốn hỏi để hiểu chút ấy mà :blush:

Tóm tắt: Fraction(1, 3) là expression statement.


Với ngôn ngữ lập trình nói chung, hay Python nói riêng. Expression và statement là 2 phần khác nhau.

Expression có giá trị trả về, có khi đơn giản là các phép tính toán cộng trừ, hay so sánh.

1 + 2
2 * 3

Expression cũng mở rộng cho trường hợp function call, class instantiation

pow(2, 3) # 6
Fraction(1, 3)

Tuy nhiên, sẽ có các cú pháp phức tạp hơn nhưng expression không thể hiện được, như: khai báo biến, vòng lặp, câu lệnh điều kiện.

Từ đó sinh ra khái niệm statement, statement bao gồm expression và các thứ nằm ngoài expression: variable declaration, if, while, for,…

Xét statement sau:

some_var = 1 + (3 * 2)

Xét theo từ vựng:

  • Identifier: some_var
  • Literal: 1, 3, 2
  • Self-Identifier: =, (, ), +, *

Từ từ vựng, được 2 expression:

  • some_var
  • 1 + (3 * 2)

Hai expression đó được tạo thành expression statement, biểu diễn vẫn như trên
Cuối cùng, assignment statement được tạo từ 2 expression statement.


Có lúc expression đứng riêng một mình, là chính nó tự tạo thành câu lệnh riêng.

1 + (3 * 2)
some_var
Fraction(1, 3)

Vì mỗi dòng trong Python tương ứng 1 statement, nên mỗi dòng trong 3 dòng trên là statement. Tuy nhiên, 3 dòng đó lại là expression, nên mỗi dòng là expression statement.


Với mỗi môi trường, REPL hay text file. Python có cách xử lý expression statement khác nhau.

  • Trong REPL, nếu dòng chỉ là expression statement, REPL hiển thị kết quả của expression.

  • Trong text file, nếu dòng là expression statement, kết quả expression bị bỏ qua.

  • Nếu không là expression statement, thực hiện statement và không hiển thị gì cả (dù REPL hay text file).


Dài dòng quá nên post trễ :cry:

4 Likes

@hungaya Bạn giải thích chi tiết quá, mình đang muốn nghe là nghe như vậy. Thật sự cảm ơn bạn. :heart::heart:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?