Chuỗi và số nguyên trong python


136

Trong trăn nói bạn có

s = "string"
i = 0
print s+i

sẽ báo lỗi cho bạn để bạn viết

print s+str(i) 

để không bị lỗi.

Tôi nghĩ rằng đây là một cách khá vụng về để xử lý nối int và chuỗi. Ngay cả Java cũng không cần truyền rõ ràng vào Chuỗi để thực hiện kiểu nối này. Có cách nào tốt hơn để thực hiện kiểu ghép nối này tức là không cần đúc rõ ràng trong Python không?


8
Đó là vì Python là ngôn ngữ được gõ mạnh ( en.wikipedia.org/wiki/Strong_typing ) (một cái gì đó để google trên để hiểu thêm :)).
mouad

3
Nó sẽ dẫn đến sự mơ hồ. Điều gì sẽ là kết quả của "1" + 1, 2hoặc "11"tại sao?
Buddy

1
Bạn tôi không chắc bạn đang nghĩ gì nhưng làm ơn đừng chỉ giả định. Vấn đề của tôi là ghép 2 loại đối tượng khác nhau và tôi đã tìm ra giải pháp. Tôi không biết bạn đã lập trình bao nhiêu trong python nhưng bạn đã bao giờ thử nối hai chuỗi chỉ để gặp lỗi khi một trong số chúng là Không có loại nào chưa? Bạn có thể kiểm tra rõ ràng ya nhưng đó chỉ là một chút mã. Loại điều này là bắt buộc khi bạn cần đăng nhập lỗi.
đặc biệt

2
Chỉ là s+str(i), và bạn đã đúng!

Câu trả lời:



87

Không có định dạng chuỗi:

>> print 'Foo',0
Foo 0

2
Điều này sẽ hoạt động tốt với in nhưng không thể được gán cho một biến dưới dạng một chuỗi. Nó cung cấp cho đối tượng Set.
đặc biệt

2
Nó cũng dính vào một khoảng trống thừa giữa hai mục, trừ khi bạn sử dụng print() hàm v3 và đặt một số tham số của nó.
Levon

34

Định dạng chuỗi, sử dụng .format()phương thức kiểu mới (với mặc định .format () cung cấp):

 '{}{}'.format(s, i)

Hoặc cũ hơn, nhưng "vẫn còn lảng vảng", định %dạng:

 '%s%d' %(s, i)

Trong cả hai ví dụ trên, không có khoảng cách giữa hai mục được nối. Nếu không gian là cần thiết, nó chỉ có thể được thêm vào trong chuỗi định dạng.

Chúng cung cấp rất nhiều kiểm soát và tính linh hoạt về cách ghép các mục, khoảng cách giữa chúng, v.v ... Để biết chi tiết về thông số kỹ thuật định dạng, hãy xem điều này .


14

Python là một ngôn ngữ thú vị ở chỗ mặc dù thường có một (hoặc hai) cách "rõ ràng" để hoàn thành bất kỳ nhiệm vụ nhất định nào, tính linh hoạt vẫn tồn tại.

s = "string"
i = 0

print (s + repr(i))

Đoạn mã trên được viết theo cú pháp Python3 nhưng dấu ngoặc đơn sau khi in luôn được cho phép (tùy chọn) cho đến khi phiên bản 3 khiến chúng bắt buộc.

Hi vọng điêu nay co ich.

Caitlin


5

Phương thức format () có thể được sử dụng để nối chuỗi và số nguyên

print(s+"{}".format(i))


0

trong python 3.6 trở lên, bạn có thể định dạng như sau:

new_string = f'{s} {i}'
print(new_string)

hoặc chỉ:

print(f'{s} {i}')
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.