2014-11-14 22 views
10

Vì vậy, cú pháp dường như đã thay đổi từ những gì tôi đã học được trong Python 2 ... đây là những gì tôi có cho đến naybiến In ấn trong python 3.4

for key in word: 
    i = 1 
    if i < 6: 
     print ("%s. %s appears %s times.") % (str(i), key, str(wordBank[key])) 

Giá trị đầu tiên là một int, thứ hai một chuỗi và cuối cùng là int.

Làm cách nào tôi có thể thay đổi câu lệnh in để in các biến chính xác?

+1

'in()' là một hàm trong Python 3, không phải là một tuyên bố. Bao quanh mọi thứ trong dòng cuối cùng của bạn (ngoại trừ từ 'in') trong dấu ngoặc đơn và bạn sẽ được đặt. – MattDMo

+2

@CMac: không, bạn không. Bạn đã làm điều này: 'print (....)', sẽ trả về 'None', sau đó là' None% (một, hai, ba_strings) '. Bạn muốn 'cái gì đó% (một, hai, ba_strings)' được thực hiện * bên trong * cuộc gọi 'print (....)'. –

+0

Đọc [this] (https://docs.python.org/3/whatsnew/3.0.html) để tham khảo trong tương lai ... – MattDMo

Trả lời

47

Cú pháp đã thay đổi trong print is now a function đó. Điều này có nghĩa rằng các định dạng % cần phải được thực hiện bên trong ngoặc đơn:

print("%d. %s appears %d times." % (i, key, wordBank[key])) 

Tuy nhiên, kể từ khi bạn đang sử dụng Python 3.x., bạn thực sự nên sử dụng các phương pháp str.format mới hơn:

print("{}. {} appears {} times.".format(i, key, wordBank[key])) 

Mặc dù định dạng % không phải là chính thức không được chấp nhận (chưa), nó được khuyến khích vì lợi ích của str.format và rất có thể sẽ bị xóa khỏi ngôn ngữ trong phiên bản sắp tới (Python 4 có thể?).


Chỉ cần một lưu ý nhỏ: %d là sự xác định định dạng cho số nguyên, không %s.

+0

Cảm ơn, câu trả lời tuyệt vời – algorhythm

0

Sự cố có vẻ là địa chỉ sai ). Trong mẫu của bạn, bạn có % ngoài print(), bạn nên di chuyển nó bên trong:

Sử dụng này:

print("%s. %s appears %s times." % (str(i), key, str(wordBank[key]))) 
4

Hãy thử cú pháp định dạng:

print ("{0}. {1} appears {2} times.".format(1, 'b', 3.1415)) 

Đầu ra:

1. b appears 3.1415 times. 

Chức năng in được gọi là giống như bất kỳ chức năng khác, với ngoặc xung quanh tất cả đối số của nó.

0

Bạn cũng có thể định dạng chuỗi như vậy.

>>> print ("{index}. {word} appears {count} times".format(index=1, word='Hello', count=42)) 

Những kết quả đầu ra

1. Hello appears 42 times. 

Vì các giá trị được đặt tên, thứ tự của chúng không quan trọng. Làm ví dụ dưới đây xuất ra giống như ví dụ trên.

>>> print ("{index}. {word} appears {count} times".format(count=42 ,index=1, word='Hello')) 

Chuỗi định dạng theo cách này cho phép bạn thực hiện việc này.

>>> data = {'count':42, 'index':1, 'word':'Hello'} 
>>> print ("{index}. {word} appears {count} times.".format(**data)) 
1. Hello appears 42 times.