Lỗi in thừa 1 lần giá trị biến cần in khi in unicode trong cmd, python 3.4

@thanhmssl10: Thanh trên cùng đó gọi là title bar :smiley:
Mình làm theo hướng dẫn đã hiển thị được tiếng việt trong cmd. Mình có 1 đoạn code python như sau:

fizz_count = 0
buzz_count = 0
fizzbuzz_count = 0
for i in range(1, 101):
    if i % 3 == 0 and i % 5 == 0:
        print("FizzBuzz")
        fizzbuzz_count += 1
    elif i % 3 == 0:
        print("Fizz")
        fizz_count += 1
    elif i % 5 == 0:
        print("Buzz")
        buzz_count += 1
    else:
        print(i)

print("Số lần Fizz: %s" % fizz_count)
print("So lan Buzz: %s" % buzz_count)

Sau khi chcp 65001 và chạy thì kết quả như sau:

1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz
31
32
Fizz
34
Buzz
Fizz
37
38
Fizz
Buzz
41
Fizz
43
44
FizzBuzz
46
47
Fizz
49
Buzz
Fizz
52
53
Fizz
Buzz
56
Fizz
58
59
FizzBuzz
61
62
Fizz
64
Buzz
Fizz
67
68
Fizz
Buzz
71
Fizz
73
74
FizzBuzz
76
77
Fizz
79
Buzz
Fizz
82
83
Fizz
Buzz
86
Fizz
88
89
FizzBuzz
91
92
Fizz
94
Buzz
Fizz
97
98
Fizz
Buzz
Số lần Fizz: 27
27
So lan Buzz: 14

Không hiểu tại sao đoạn cuối nó lại in ra 2 lần số 27?

Mình ko edit được title để thêm chữ Lỗi, @thanhmssl10 giúp mình với. Thanks!

1 Like

Lỗi này mình cũng không rõ nữa, mình ít dùng python 3, nhưng khi mình thử tăng giảm số lượng chữ có dấu trong chuỗi thì số kí tự in thừa ra hàng sau cũng thay đổi :smile:

Khả năng là lỗi của windows hoặc python rồi, mình thử đổi chcp 1258 thì in được chữ không có dấu huyền sắc hỏi ngã nặng

@thanhmssl10 sửa hộ mình tiêu đề, thêm chữ Lỗi vào đầu với.
Với cả ở dòng trên nó vẫn in ra số 27 mà. Không phải là tự xuống dòng mà là in thừa 1 lần giá trị biến cần in

1 Like

Mình có đưa câu hỏi của bạn lên StackOverflow nhưng khả năng là cmd của windows hỗ trợ utf-8 khá kém (hoặc là có thể do “bất đồng” với python :smile: )

Có một bác đưa ra giải pháp là dùng cái này : https://github.com/Drekin/win-unicode-console :smile:

Nếu vẫn không được mà bắt buộc phải viết tiếng việt thì bạn có thể chuyển về python 2, cái này mình làm bằng python 2, cũng viết được tiếng việt trên cmd

1 Like

Thực ra thì mình không muốn đọc sâu quá về mấy cái encoding này, hoặc phải cài 1 package để mỗi lần dùng lại phải import, enable với disable (đọc qua README của win-unicode-console).

Hiện mình dùng Sublime Text 3 cài plugin Anaconda để code. Nó hỗ trợ build và có hiển thị được tiếng việt, tuy nhiên phần build này không cho nhập dữ liệu qua input. Còn dùng CMD thì lỗi như trên.

Mục đích của mình chỉ là in kết quả trong quá trình code để debug thôi. Vậy nên @thanhmssl10 hay bạn nào có cách nào hay hơn dùng CMD không?

Chắc chỉ còn cách dùng chữ tiếng việt k dấu thôi :joy:

Làm web scraper (beautifulsoup) nó trả về tiếng việt có dấu, muốn in ra thì chịu ah :sob:

Chuyển về không dấu được đấy :smile:

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