30/09/2018, 23:49

Print trong python

E muốn tạo một chương trình: khi người ta nhập tên vào chương trình sẽ in ra tên người đó bằng dấu ‘*’
e đang gặp khó khi print chữ ra nhập vào print ra không đúng ý muốn @@! đặc biệt là không biết chạy for làm sao để print nhiều chữ một lúc



Tung Dao viết 01:52 ngày 01/10/2018

Định nghĩa character vậy không hay, nên định nghĩa 1 character là 1 string thôi, lúc đó print ra sẽ dễ hơn, VD:

d = '''\
*********
**********
**       **
**********
*********\
'''

Lúc đó khối for cuối cùng bạn chỉ cần viết:

for fi in range(len(forprint)):
    print(forprint[fi])

Góp ý: trong code bạn có 1 số chỗ dùng chưa hay, mình thấy chưa tận dụng dc thế mạnh sytax python, như:

# vòng lặp này
for cnt in range(len(list)):
    print(list[cnt])
# nên chuyển thành
for ele in list:
   print(ele)
```Phần kí tự để in ra, bạn nên tạo thành từ điển, lúc truy xuất sẽ dễ hơn, như:
```python
char_dict = {\
'a' : '''\
Vẽ chữ A vào\
''', 
'b' : '''\
Vẽ chữ B vào\
''',
...}

Cuối cùng là code nên để vào Markdown cho người khác dẽ copy mà test, có 1 file code mà bạn chụp 3 tấm hình

htl@PyMI.vn viết 02:00 ngày 01/10/2018

Bạn nên tạo 1 dict với key là a, b, c, value là các string ascii. Lưu ý dùng triple quote ''' cho value.

Khoa NTA viết 01:56 ngày 01/10/2018

Nói chung là mình không rõ lắm nhưng mình đề xuất ý kiến như thế này:

for i in xrange(chiều_cao_1_ký_tự):
    for j in list_ký_tự:
        print j[i],    # in dòng thứ i của tất cả các ký tự
    print    # đã hết 1 dòng 

Bạn thử cách này xem sao.

Nguyen Thanh Trung viết 02:02 ngày 01/10/2018

lúc đầu e làm như thế đó nhưng như vậy có print ngang được mô?

Nguyen Thanh Trung viết 02:06 ngày 01/10/2018

nhưng nếu ở đây là nhiều chữ thì nó sẽ in theo hàng dọc nó không theo hàng ngang -__- khó là khó vậy =]]

Khoa NTA viết 01:55 ngày 01/10/2018

nhưng nếu ở đây là nhiều chữ thì nó sẽ in theo hàng dọc nó không theo hàng ngang -__- khó là khó vậy =]]

Chuyện gì lạ vậy? Bạn có thể post code lên diễn đàn hay đâu đó để mình thử xem sao.
Mà nếu quá nhiều chữ thì màn hình console không chứa hết, chỉ cần di chuyển output vào 1 file rồi xem kết quả là xong.
Nếu bạn muốn nói là print tự xuống dòng không theo ý muốn thì bạn coi kỹ lại code của mình, để ý dấu ','. Khi sử dụng print "Hello", thì print sẽ in ra “Hello” và 1 khoảng trắng thay vì ký tự xuống dòng.

Phạm Sỹ Hưng viết 01:58 ngày 01/10/2018

Mình không biết python nên mình dùng java nhé.
Mình nghĩ bạn nên cho mỗi chữ thành một mảng, mỗi phần tử trong mảng là một hàng (Với điều kiện các chữ cái đều phải có cùng số hàng). VD

String[] d = {
",
"
",
“** **”,
"
",
"

}

Rồi bạn dùng 2 vòng for lồng nhau, vòng bên ngoài sẽ đi hết các hàng, vòng bên trong đi hết các chữ cái, rồi in ra hàng tương ứng của từng chữ
for (int hang = 0; hang < tongSoHang; hang++){
for (int chu = 0; chu < tongSoChu; chu++){
in ra hàng thứ “hang” của chữ thứ “chu”
}
}

Lương Quang Mạnh viết 01:50 ngày 01/10/2018

print trong Python nó khác với printf trong C ở chỗ là nó tự động thêm \n vào cuối, cho nên bạn chỉ in dọc được là đúng rồi. Muốn in ngang, bạn dùng print(some_str, end=' ') nhé, nó sẽ thay \n bằng dấu cách.
print nó còn nhiều thứ hay ho lắm, bạn xem thêm trong Documentation nhé.

Nguyen Thanh Trung viết 01:59 ngày 01/10/2018

cái đó thì chỉ có thể in một chữ thôi còn nhiều chữ là đứt liền

Nguyen Thanh Trung viết 01:51 ngày 01/10/2018

khi print nhiều sẽ bị dọc e đã test case đó lâu rồi ạ

Phạm Sỹ Hưng viết 02:05 ngày 01/10/2018

Dọc sao được bạn. Mỗi chữ cái nằm trong 1 ô mxn, chỗ nào không muốn đi nét thì thay bằng các dấu cách sao cho thành 1 hình chữ nhật, mình in theo hàng, mỗi hàng kết quả bao gồm hàng của tất cả các chữ mà

Khoa NTA viết 01:50 ngày 01/10/2018

Mình nghĩ bạn nên post code để cho mọi người xem xét. (Tụi mình không lấy code của bạn vào thương mại đâu, bạn đừng lo) Việc đó sẽ tốt hơn là bắt mọi người tưởng tượng để đưa ra phương án giải quyết. Tụi mình đang cố gắng giúp bạn và bạn nên tạo điều kiện tốt nhất để tụi mình có thể giúp bạn nhé. Vì việc ngồi tìm hay gõ ra mấy chữ “a”, “b”, “c”,… bằng dấu sao thì hơi phiền.
P/s: bạn nên thử đặt mình vào vai trò người giúp đỡ để xem có thể trả lời cho vướng mắc của bạn được không nha.

Nguyen Thanh Trung viết 01:57 ngày 01/10/2018

e mới hoàn thành xong =]]] hahaha

Nguyen Thanh Trung viết 01:52 ngày 01/10/2018

cái print(some_str, end=’ ') cái đó e test thì nó không được
hình như là nó dành cho python 3 thì phải còn e thì dùng python 2

Khoa NTA viết 01:50 ngày 01/10/2018

Python 2 thì dùng print some_str, hoặc sys.stdout.write(some_str). Cả 2 đều không xuống dòng bạn nhé. (Lưu ý dấu phẩy phía cuối some_str, không phải lỗi cú pháp đâu).

Lương Quang Mạnh viết 01:54 ngày 01/10/2018

À ờ, mình xin lỗi không để ý .
Nhưng có một cách để có thể dùng print() của Python3 trong Python2 (nhưng lại không thể dùng print statement kiểu cũ nữa): from __future__ import print_function
Hoặc bạn có thể ghi trực tiếp ra standart output như @aliston nói. Bản chất của print cũng là từ đây mà ra cả).

P/s: __future__ module là một thư viện để mang những tính năng của Python3 lên Python2.

Nguyen Thanh Trung viết 01:58 ngày 01/10/2018

là một thư viện để mang những tính năng của Python3 lên Python2.

mình không biết nhiều nên lúc đó mình chỉ nghĩ được một cách duy nhất để print ngang đó là để dòng chữ ở trong list 1 chữ = 1 list 8 value

Lương Quang Mạnh viết 02:01 ngày 01/10/2018

Và??? Cho vào trong list rồi làm gì tiếp nhỉ? Mình không hiểu ý tưởng của bạn lắm.

Nguyen Thanh Trung viết 02:01 ngày 01/10/2018

đây là cái mình làm

Nguyen Thanh Trung viết 01:53 ngày 01/10/2018

Bài liên quan
0