Kết quả của câu lệnh sau là gì? Cách tính kết quả câu lệnh str() trong Python

Trả lời nhanh

Với câu lệnh có hàm str(34), hàm này đổi số 34 thành chuỗi ’34’. Khi đó phép * lặp chuỗi (str(34)*3 cho ‘343434’), phép + nối chuỗi (str(34)+’3′ cho ‘343’), còn str(34)+3 gây lỗi TypeError vì không cộng được chuỗi với số. Hãy xác định kiểu dữ liệu trước rồi mới tính.

Hàm str() làm gì?

Trong Python, str() là hàm ép kiểu: nó nhận một giá trị (số nguyên, số thực, …) và trả về chuỗi ký tự biểu diễn giá trị đó. Ví dụ str(34) trả về ’34’ gồm hai ký tự ‘3’ và ‘4’, không còn là số 34 để tính toán.

Điều này dẫn đến một quy tắc rất quan trọng: toán tử giống nhau nhưng chạy khác nhau tùy kiểu dữ liệu của hai vế.

Bảng kết quả các trường hợp thường gặp

Câu lệnh Kết quả Giải thích
print(str(34)) 34 Chuỗi ’34’ khi in ra không hiện dấu nháy
print(str(34)*3) 343434 Chuỗi nhân với số nguyên là lặp chuỗi 3 lần
print(str(34)+’3′) 343 Cộng hai chuỗi là nối chuỗi
print(str(34)+3) Lỗi TypeError Không thể cộng chuỗi với số
print(int(’34’)+3) 37 Chuyển chuỗi về số rồi mới cộng
print(str(3*4)) 12 Tính 3*4 = 12 trước, rồi đổi 12 thành chuỗi ’12’
print(34*3) 102 Cả hai vế là số nên là phép nhân thông thường

Quy trình tìm kết quả câu lệnh

  1. Tính các biểu thức trong ngoặc hoặc trong hàm trước (từ trong ra ngoài).
  2. Xác định kiểu dữ liệu của từng thành phần: số (int, float) hay chuỗi (str).
  3. Áp dụng quy tắc của toán tử theo kiểu: số + số là cộng, chuỗi + chuỗi là nối, chuỗi * số là lặp, số + chuỗi là lỗi.
  4. Xem câu lệnh có print() hay không để biết kết quả được hiển thị thế nào.

Phân biệt 34*3 và str(34)*3

Hai biểu thức nhìn rất giống nhau nhưng kết quả hoàn toàn khác. Với 34*3, Python coi 34 là số, kết quả là 102. Với str(34)*3, Python coi ’34’ là chuỗi và lặp lại ba lần nên được ‘343434’. Nhiều bạn chọn nhầm đáp án vì chỉ nhìn thấy các chữ số mà quên đi kiểu dữ liệu.

Mẹo ghi nhớ

  • Có dấu nháy hoặc str() thì nghĩ đến chuỗi, cộng là nối.
  • Muốn cộng số thật thì phải dùng int() hoặc float() trước.
  • Dùng hàm type() để kiểm tra nhanh kiểu dữ liệu khi còn phân vân.

Lỗi sai thường gặp

  • Cho rằng str(34)+3 bằng 37. Thực tế chương trình báo lỗi vì hai vế khác kiểu.
  • Cho rằng str(34)*3 bằng 102. Đó là kết quả của phép nhân số.
  • Nhầm kết quả hiển thị ‘343434’ (có nháy) khi dùng biểu diễn với kết quả của print() (không có nháy).

Luyện tập

  1. Kết quả của print(str(7)*4) là gì? Đáp án: 7777.
  2. Kết quả của print(str(12)+str(5)) là gì? Đáp án: 125 (nối chuỗi).
  3. Sửa câu lệnh print(str(8)+2) để in ra 10. Đáp án: print(8+2) hoặc print(int(str(8))+2).
  4. print(len(str(2026))) in ra giá trị nào? Đáp án: 4, vì chuỗi ‘2026’ có 4 ký tự.

Câu hỏi thường gặp

Hàm str() trong Python dùng để làm gì?

Hàm str() chuyển một giá trị như số nguyên hay số thực thành chuỗi ký tự, ví dụ str(34) cho chuỗi '34'.

str(34)*3 cho kết quả gì?

Kết quả là chuỗi '343434', vì nhân một chuỗi với số nguyên là lặp lại chuỗi đó số lần tương ứng.

Vì sao str(34)+3 bị lỗi?

Vì một vế là chuỗi, một vế là số, Python không tự động chuyển kiểu nên báo lỗi TypeError.

Làm sao để cộng số thực sự thay vì nối chuỗi?

Dùng int() hoặc float() để chuyển chuỗi về số trước khi cộng, ví dụ int('34') + 3 cho kết quả 37.