2014-06-16 17 views

Trả lời

18

Bạn cần phải đặt các tham số cho chuỗi định dạng trong ngoặc:

print (... % (name, last_name, gender, age)) 

Nếu không, Python sẽ chỉ nhìn thấy name như một tham số để định dạng chuỗi và phần còn lại như các đối số cho print chức năng.


Lưu ý rằng việc sử dụng % cho các hoạt động định dạng chuỗi được cau mày vào những ngày này. Cách tiếp cận hiện đại là sử dụng str.format:

print ("So your name is {}, your last name is {}, you are {} and you are {} years old".format(name, last_name, gender, age)) 
+0

Đó là một lựa chọn tốt, để lại đằng sau những phương pháp định dạng chuỗi cũ từ Python, và sử dụng phương pháp này :). Nó tránh được rất nhiều đau đầu và cho bạn sự linh hoạt hơn khi nói đến định dạng đầu ra tốt hơn, đưa các khoảng trống để tạo thành các cột dữ liệu, ví dụ. Đây là tài liệu chính thức, có rất nhiều ví dụ :) -> https://pyformat.info/ – ivanleoncz

6

Bạn cần một bộ ngoặc:

>>> '%s %s' % 'a', 'b' # what you have 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: not enough arguments for format string 
>>> 
>>> 
>>> '%s %s' % ('a', 'b') # correct solution 
'a b' 

'%s %s' % 'a', 'b' được đánh giá là ('%s %s' % 'a'), 'b', trong đó sản xuất một lỗi trong '%s %s' % 'a' kể từ khi bạn có lý lẽ ít hơn định dạng specifiers.


print("So your name is %s, your last name is %s, you are %s and you are %s years old" % (name, last_name, gender, age)) 
Các vấn đề liên quan