2012-04-02 64 views
7

Tôi khá mới đối với Python, vì vậy tôi đang thử một số mã đơn giản. Tuy nhiên, trong một trong những cách thực hành, mã của tôi được cho là hiển thị một số con số bằng inch ở bên trái và việc chuyển đổi các con số ở bên phải;Làm cách nào để thêm khoảng trắng giữa hai biến sau khi in bằng Python

count = 1 
conv = count * 2.54 
print count, conv 

Tôi muốn đầu ra được in với khoảng cách giữa chúng;

count = 1 
conv = count * 2.54 
print count,  conv 

Tôi không thể tìm ra cách thực hiện việc này. Tôi đã tìm kiếm ở khắp mọi nơi, nhưng tất cả những gì tôi có thể tìm thấy là những người đang cố gắng loại bỏ không gian. Nếu ai đó có thể chỉ dẫn tôi đi đúng hướng, tôi sẽ biết ơn.

Ồ, và tôi vừa mới nhận ra rằng Tôi đang sử dụng Python 2.7, không phải là 3.x. Không chắc chắn nếu điều này là quan trọng.

Trả lời

7

Một cách đơn giản sẽ là:

print str(count) + ' ' + str(conv) 

Nếu bạn cần không gian hơn, bạn chỉ cần thêm chúng vào chuỗi:

print str(count) + ' ' + str(conv) 

Một cách fancier, bằng cách sử dụng cú pháp mới để định dạng chuỗi:

print '{0} {1}'.format(count, conv) 

Hoặc sử dụng cú pháp cũ, giới hạn số thập phân thành hai:

print '%d %.2f' % (count, conv) 
+0

Không phải công việc đó. Cách đầu tiên mang lại cho tôi lỗi Traceback và hành động thứ hai hoạt động như thể số 'in đếm, conv' – Hebon

+0

Sửa lỗi đầu tiên, cho tất cả chúng: bạn có thể thêm nhiều khoảng trống khi bạn cần ở giữa! –

+0

Việc đầu tiên sẽ không hoạt động bởi vì bạn không thể thêm một số nguyên vào một chuỗi, cũng không phải là một chuỗi cho một phao. Để có thêm không gian trong các ví dụ thứ hai và thứ ba, chỉ cần đặt số lượng khoảng trống cần thiết giữa {0} và {1} hoặc% d và% f. – Whatang

4

Sử dụng string interpolation để thay thế.

print '%d %f' % (count,conv) 
+0

Điều đó gần như hoạt động, nhưng bây giờ tôi có thêm số 0 ở cuối biến "conv" của tôi 'Inch \t \t Centimeters 1 2.540000' – Hebon

+1

Vì vậy, hãy điều chỉnh bộ lọc'% f'. –

1

Đây là một ngu ngốc/hacky cách

print count,  
print conv 
2

Hoặc bạn có thể sử dụng ljust/rjust để làm cho định dạng đẹp hơn.

print "%s%s" % (str(count).rjust(10), conv) 

hoặc

print str(count).ljust(10), conv 
+0

Tôi thực sự thích giải pháp này nhiều hơn so với người thân 'printf'. Nó dễ hiểu hơn so với chỉ định định dạng 'printf' và thực hiện chính xác những gì nó nói trên tin. –

2

Phạt cảnh cáo nhanh chóng, điều này một câu trả lời khá dài dòng.

in khó khăn đôi khi, tôi gặp một số vấn đề với nó khi tôi lần đầu tiên bắt đầu. Những gì bạn muốn là một vài không gian ở giữa hai biến sau khi bạn in chúng phải không? Có nhiều cách để làm điều này, như được hiển thị trong các câu trả lời ở trên.

Đây là mã của bạn:

count = 1 
conv = count * 2.54 
print count, conv 

Đó là đầu ra là thế này:

1 2.54 

Nếu bạn muốn không gian ở giữa, bạn có thể làm điều đó một cách ngây thơ bằng cách dán một chuỗi các không gian ở giữa chúng. Các biến số và chuyển đổi cần phải được chuyển đổi thành các loại chuỗi để nối (nối) chúng lại với nhau. Điều này được thực hiện với str().

print (str(count) + "   " + str(conv)) 
### Provides an output of: 
1   2.54 

Để làm điều này là cách mới hơn, sâu hơn, chúng tôi sử dụng ký hiệu% kết hợp với một chữ cái để biểu thị loại giá trị chúng tôi đang sử dụng. Ở đây tôi sử dụng dấu gạch dưới thay vì dấu cách để hiển thị số lượng có. Các modulo trước khi các giá trị cuối cùng chỉ cho python để chèn các giá trị sau trong, theo thứ tự chúng tôi cung cấp.

print ('%i____%s' % (count, conv)) 
### provides an output of: 
1____2.54 

tôi sử dụng i% cho số vì nó là một số nguyên, và% s cho conv, bởi vì sử dụng% i trong trường hợp đó sẽ cung cấp cho chúng với "2" thay vì "2,54" Về mặt kỹ thuật, tôi có thể' đã sử dụng cả hai% s, nhưng tất cả đều tốt.

Tôi hy vọng điều này sẽ hữu ích!

-Joseph

P.S. nếu bạn muốn phức tạp với định dạng của mình, bạn nên xem xét số lượng lớn văn bản như từ điển và danh sách tuple (được nhập dưới dạng pprint) cũng như làm các tab tự động, khoảng cách và các thư rác khác.

Dưới đây là một số thông tin khác về chuỗi trong tài liệu python. http://docs.python.org/library/string.html#module-string

+1

Điều này rất thông tin. Cảm ơn bạn đã dành thời gian để giải thích. – Hebon

+0

Cảm ơn, tôi rất vui vì tôi có thể hữu ích! –

0

print str(count) + ' ' + str(conv) - Điều này không hiệu quả. Tuy nhiên, thay thế + với , công trình đối với tôi

0

Bạn nên sử dụng python Explicit Cờ Conversion PEP-3101

'My name is {0!s:10} {1}'.format('Dunkin', 'Donuts')

'My name is Dunkin Donuts'

hoặc

'My name is %-10s %s' % ('Dunkin', 'Donuts')

'My name is Dunkin Donuts'

https://www.python.org/dev/peps/pep-3101/

Các vấn đề liên quan