Chuỗi python thành biểu thức toán học

Python cho phép các nhà phát triển sử dụng các toán tử số học phổ biến trên các chuỗi. Thao tác dữ liệu văn bản ở mức độ cao này là một trong nhiều lý do khiến Python trở nên phổ biến. Một ví dụ về điều này là khả năng sử dụng các toán tử số học để thao tác các chuỗi trong Python

Mục lục

Mặc dù thuận tiện nhưng có một số hạn chế khi sử dụng các toán tử số học như toán tử cộng, trừ, cộng-bằng và thậm chí là phép nhân trên các chuỗi. Ví dụ: nhân một chuỗi với một số float sẽ dẫn đến TypeError. không thể nhân chuỗi với ngoại lệ không thuộc loại 'float'

Điểm nổi bật

Trong bài viết này, chúng ta xem xét một số trường hợp sử dụng để áp dụng toán tử số học cho chuỗi Python. Cuộc thảo luận sẽ bao gồm một số trường hợp phổ biến, trường hợp nâng cao và cả các vấn đề phổ biến. Cuối cùng, chúng tôi sẽ đề cập đến những điều sau đây

  1. Nối chuỗi cơ bản với các toán tử số học
  2. Những toán tử nào không thể được sử dụng trong các hoạt động chuỗi
  3. Phương tiện mới để áp dụng toán tử nhân để tạo các bản sao của chuỗi
  4. Cách ưu tiên toán tử vẫn áp dụng cho các hoạt động chuỗi
  5. Mẹo sử dụng toán tử số học trên đầu vào của người dùng
  6. Làm thế nào các đối tượng
    # Create an example string
    s1 = "alpharithms"
    print[s1]
    
    # concatenate some text
    s1 += " is cool."
    print[s1]
    
    # output
    alpharithms
    alpharithms is cool.
    4 có thể thay đổi chuỗi

Trước khi đi sâu vào, trước tiên chúng ta hãy xem xét bản chất của chuỗi Python. Cụ thể, chúng ta sẽ thảo luận ngắn gọn về cách các chuỗi Python là bất biến, điều đó có nghĩa là gì và tác động của điều này đối với việc thực hiện các phép toán số học dựa trên chuỗi

Giới thiệu nhanh. Hiểu chuỗi Python

Chuỗi Python khác với chuỗi trong nhiều ngôn ngữ khác. Không đi sâu vào chi tiết, điều quan trọng cần lưu ý là các điểm sau về chuỗi Python

  1. Chuỗi Python là bất biến. Thay đổi một chuỗi yêu cầu tạo một bản sao
  2. Các chuỗi là các đối tượng mảng [danh sách], theo đó mỗi ký tự riêng lẻ có thể được truy cập thông qua ký hiệu chỉ mục là
    # Create an example string
    s1 = "alpharithms"
    print[s1]
    
    # concatenate some text
    s1 += " is cool."
    print[s1]
    
    # output
    alpharithms
    alpharithms is cool.
    5 trong đó
    # Create an example string
    s1 = "alpharithms"
    print[s1]
    
    # concatenate some text
    s1 += " is cool."
    print[s1]
    
    # output
    alpharithms
    alpharithms is cool.
    6 là một chỉ mục số trong mảng [danh sách. ]
  3. Đầu vào số của người dùng được chuyển đổi thành một chuỗi và phải được đánh máy sang định dạng mong muốn trước khi có thể áp dụng chính xác các phép tính số học

ví dụ 0. Chuỗi là bất biến

Đây không phải là một ví dụ về nhân, cộng hoặc trừ các chuỗi. Tuy nhiên, điểm này rất cần thiết để hiểu cách các chuỗi được lưu trữ và truy cập trong Python nên nó phải được thảo luận. Xem xét ví dụ sau

# example of number mutability
a = 5
print[a]

a += 1
print[a]

# output
5
6

Điều này cho thấy một biến

# Create an example string
s1 = "alpharithms"
print[s1]

# concatenate some text
s1 += " is cool."
print[s1]

# output
alpharithms
alpharithms is cool.
7 được gán một giá trị nguyên là
# Create an example string
s1 = "alpharithms"
print[s1]

# concatenate some text
s1 += " is cool."
print[s1]

# output
alpharithms
alpharithms is cool.
8, sau đó, thông qua toán tử
# Create an example string
s1 = "alpharithms"
print[s1]

# concatenate some text
s1 += " is cool."
print[s1]

# output
alpharithms
alpharithms is cool.
9 [tương đương với
# create a string
s1 = "alpharithms"

# attempt to remove the s from the end
s1[-1] = ""

TypeError: 'str' object does not support item assignment
0], giá trị này được “tăng” thêm 1 dẫn đến giá trị cuối cùng là 6. Điều này được xác nhận thông qua đầu ra từ 2 câu lệnh
# create a string
s1 = "alpharithms"

# attempt to remove the s from the end
s1[-1] = ""

TypeError: 'str' object does not support item assignment
1. Trong hầu hết các ngôn ngữ lập trình khác, sẽ thật điên rồ nếu xem xét thực hiện một thao tác như vậy đối với một chuỗi. Hãy xem cách Python xử lý nó

# Create an example string
s1 = "alpharithms"
print[s1]

# concatenate some text
s1 += " is cool."
print[s1]

# output
alpharithms
alpharithms is cool.

Ở đây chúng ta thấy văn bản bổ sung được thêm vào biến

# create a string
s1 = "alpharithms"

# attempt to remove the s from the end
s1[-1] = ""

TypeError: 'str' object does not support item assignment
2. Có vẻ như chúng ta đang biến đổi một chuỗi nhưng thực ra không phải vậy. Thay vào đó, chúng tôi chỉ đơn giản là gán lại một giá trị mới cho các biến
# create a string
s1 = "alpharithms"

# attempt to remove the s from the end
s1[-1] = ""

TypeError: 'str' object does not support item assignment
2. Hãy xem điều gì sẽ xảy ra nếu chúng ta cố gắng thay đổi một chuỗi trực tiếp trong Python

# create a string
s1 = "alpharithms"

# attempt to remove the s from the end
s1[-1] = ""

TypeError: 'str' object does not support item assignment

Ở đây chúng ta có cái nhìn đầu tiên về bản chất bất biến của các chuỗi Python. Một ngoại lệ

# create a string
s1 = "alpharithms"

# attempt to remove the s from the end
s1[-1] = ""

TypeError: 'str' object does not support item assignment
4 được đưa ra khi cố gắng thao tác trực tiếp một giá trị có trong một mảng chuỗi Python. Điều này hoàn toàn trái ngược với cách người ta có thể thao tác với các mảng giá trị số — hoặc thậm chí là các mảng ký tự. Hãy xem xét đoạn mã sau

# change single character
a1 = ['a', 'l', 'p', 'h', 'a', 'r', 'i', 't', 'h', 'm', 's']
a1[-1] = "\0"
print[a1]

# change integer item
a2 = [1, 2, 3, 4, 5]
a2[0] = 6
print[a2]

# Output
['a', 'l', 'p', 'h', 'a', 'r', 'i', 't', 'h', 'm', '\x00']
[6, 2, 3, 4, 5]

Ở đây, chúng tôi thấy đầu ra phản ánh những thay đổi của chúng tôi mà không có bất kỳ ngoại lệ nào được nêu ra. Kiểu này minh họa cách chuỗi Python là mảng "đặc biệt" ở chỗ dữ liệu chứa trong chuỗi không thể thao tác được. Để tìm hiểu sâu hơn, hãy đọc bài viết này. Công nhận đơn giản về tính bất biến của chuỗi Python là đủ cho cuộc thảo luận của chúng ta ở đây

ví dụ 1. Nối dựa trên toán tử số học

Python cho phép sử dụng các toán tử số học để thao tác với chuỗi. Điều này cho phép cộng, trừ và thậm chí nhân các chuỗi diễn ra thông qua các toán tử phổ biến như

# create a string
s1 = "alpharithms"

# attempt to remove the s from the end
s1[-1] = ""

TypeError: 'str' object does not support item assignment
5 và 
# create a string
s1 = "alpharithms"

# attempt to remove the s from the end
s1[-1] = ""

TypeError: 'str' object does not support item assignment
6, cũng như toán tử gán, nhưng không phải là
# create a string
s1 = "alpharithms"

# attempt to remove the s from the end
s1[-1] = ""

TypeError: 'str' object does not support item assignment
7 hoặc
# create a string
s1 = "alpharithms"

# attempt to remove the s from the end
s1[-1] = ""

TypeError: 'str' object does not support item assignment
8. Chúng ta sẽ xem xét những trường hợp cuối cùng trong giây lát. Bây giờ, hãy xem xét những người khác

# creates a string
a1 = "alpharithms"

# create a new string with extra text
a2 = a1 + " is cool"
print[a2]

# use assignment operator to do the same
a1 += " is cool"
print[a1]

# output
alpharithms is cool
alpharithms is cool

Ở đây, chúng ta thấy đầu ra giống hệt nhau cho dù chúng ta thêm một chuỗi mới một cách rõ ràng thông qua phép gán cho một biến mới

# create a string
s1 = "alpharithms"

# attempt to remove the s from the end
s1[-1] = ""

TypeError: 'str' object does not support item assignment
9 hay hoàn toàn thông qua toán tử
# Create an example string
s1 = "alpharithms"
print[s1]

# concatenate some text
s1 += " is cool."
print[s1]

# output
alpharithms
alpharithms is cool.
9 [gán một giá trị mới cho các biến ban đầu
# change single character
a1 = ['a', 'l', 'p', 'h', 'a', 'r', 'i', 't', 'h', 'm', 's']
a1[-1] = "\0"
print[a1]

# change integer item
a2 = [1, 2, 3, 4, 5]
a2[0] = 6
print[a2]

# Output
['a', 'l', 'p', 'h', 'a', 'r', 'i', 't', 'h', 'm', '\x00']
[6, 2, 3, 4, 5]
1. ] Hãy xem một số toán tử số học khác theo cách tiếp cận này như thế nào

phép trừ

# Subtraction and multiplication don't always work
b1 = "alpharithms"
b2 = b1 - "s"
print[b2]

# Output
TypeError: unsupported operand type[s] for -: 'str' and 'str'

b1 = "alpharithms"
b1 -= "s"
print[b1]

# Output
TypeError: unsupported operand type[s] for -=: 'str' and 'str'

Ở đây chúng ta thấy cùng một ngoại lệ

# create a string
s1 = "alpharithms"

# attempt to remove the s from the end
s1[-1] = ""

TypeError: 'str' object does not support item assignment
4 được nêu ra. Rõ ràng, toán tử trừ không hoạt động tốt với các chuỗi. Phép chia và phép nhân tạo ra các ngoại lệ tương tự. Tuy nhiên, thao tác chuỗi dựa trên phép nhân có thể thực hiện theo cách khác

ví dụ 2. Thao tác chuỗi dựa trên phép nhân

Phép nhân là một trường hợp đặc biệt nhờ đó Python cung cấp một số tính năng mở rộng. Tương tự như phép trừ và phép chia, toán tử nhân không hoạt động trong thao tác trực tiếp của một chuỗi

# create the sample string
s1 = "alpharithms"

# attempt a direct multiplication operation
s2 = s1 * " is cool"

# output
TypeError: can't multiply sequence by non-int of type 'str'

# attempt an assignment operation
s1 *= " is cool"

# output
TypeError: can't multiply sequence by non-int of type 'str'

Python không cho phép sử dụng toán tử nhân để tạo nhiều bản sao của một chuỗi. Xem xét ví dụ sau

# Create an example string
s1 = "alpharithms"

# Use multiplication modifier with an integer value
# to create a new string made of duplicates of the
# initial string
s2 = s1 * 5

print[s2]
# output
alpharithmsalpharithmsalpharithmsalpharithmsalpharithms

Kết quả tương tự sẽ được tạo ra bằng cách sử dụng cú pháp

# change single character
a1 = ['a', 'l', 'p', 'h', 'a', 'r', 'i', 't', 'h', 'm', 's']
a1[-1] = "\0"
print[a1]

# change integer item
a2 = [1, 2, 3, 4, 5]
a2[0] = 6
print[a2]

# Output
['a', 'l', 'p', 'h', 'a', 'r', 'i', 't', 'h', 'm', '\x00']
[6, 2, 3, 4, 5]
3. Ở cấp độ khái niệm, điều này có ý nghĩa — tương đương với việc đưa ra hướng dẫn “tạo 5 bản sao của
# create a string
s1 = "alpharithms"

# attempt to remove the s from the end
s1[-1] = ""

TypeError: 'str' object does not support item assignment
2“. Điều gì sẽ xảy ra nếu chúng ta sử dụng một giá trị phân số?

# Create an example string
s1 = "alpharithms"

# Create 5 and a half copies
s2 = s1 * 5.5

TypeError: can't multiply sequence by non-int of type 'float'

Ở đây chúng ta thấy TypeError. không thể nhân chuỗi với ngoại lệ 'float' không thuộc loại int được nêu ra. Python 100% có thể đã chọn diễn giải các giá trị phân số, chẳng hạn như số float để trả về tỷ lệ phần trăm của tổng số ký tự bằng cách tạo các bản sao của chuỗi. Trong trường hợp này,

# change single character
a1 = ['a', 'l', 'p', 'h', 'a', 'r', 'i', 't', 'h', 'm', 's']
a1[-1] = "\0"
print[a1]

# change integer item
a2 = [1, 2, 3, 4, 5]
a2[0] = 6
print[a2]

# Output
['a', 'l', 'p', 'h', 'a', 'r', 'i', 't', 'h', 'm', '\x00']
[6, 2, 3, 4, 5]
5 sẽ là 2/11 sẽ là 5. 5, làm tròn xuống 5 ký tự số nguyên gần nhất.
# change single character
a1 = ['a', 'l', 'p', 'h', 'a', 'r', 'i', 't', 'h', 'm', 's']
a1[-1] = "\0"
print[a1]

# change integer item
a2 = [1, 2, 3, 4, 5]
a2[0] = 6
print[a2]

# Output
['a', 'l', 'p', 'h', 'a', 'r', 'i', 't', 'h', 'm', '\x00']
[6, 2, 3, 4, 5]
6. Tuy nhiên, đây không phải là trường hợp và không thể sử dụng phép nhân float với chuỗi

ví dụ 3. Người vận hành máy trộn

Ở điểm này, rõ ràng là các toán tử cộng và nhân rất hữu ích để thao tác với các chuỗi. Chúng tôi đã thấy ứng dụng của từng ứng dụng riêng lẻ nhưng chưa xem xét cách người ta có thể sử dụng chúng kết hợp với nhau. Hãy xem xét đoạn mã sau

# create a sample string
s1 = "alpharithms"

# Create 5 copies separated by a space
s2 = s1 + " " * 5

# print result
print[s2]

# result
alpharithms

Thay vì dự kiến ​​5 bản sao của

# change single character
a1 = ['a', 'l', 'p', 'h', 'a', 'r', 'i', 't', 'h', 'm', 's']
a1[-1] = "\0"
print[a1]

# change integer item
a2 = [1, 2, 3, 4, 5]
a2[0] = 6
print[a2]

# Output
['a', 'l', 'p', 'h', 'a', 'r', 'i', 't', 'h', 'm', '\x00']
[6, 2, 3, 4, 5]
7, thay vào đó, chúng tôi thấy những gì có vẻ là một bản duy nhất. Trên thực tế, đây là một bản sao có thêm 5 ký tự khoảng trắng được thêm vào cuối. Nếu phần
# change single character
a1 = ['a', 'l', 'p', 'h', 'a', 'r', 'i', 't', 'h', 'm', 's']
a1[-1] = "\0"
print[a1]

# change integer item
a2 = [1, 2, 3, 4, 5]
a2[0] = 6
print[a2]

# Output
['a', 'l', 'p', 'h', 'a', 'r', 'i', 't', 'h', 'm', '\x00']
[6, 2, 3, 4, 5]
8 được thay thế bằng
# change single character
a1 = ['a', 'l', 'p', 'h', 'a', 'r', 'i', 't', 'h', 'm', 's']
a1[-1] = "\0"
print[a1]

# change integer item
a2 = [1, 2, 3, 4, 5]
a2[0] = 6
print[a2]

# Output
['a', 'l', 'p', 'h', 'a', 'r', 'i', 't', 'h', 'm', '\x00']
[6, 2, 3, 4, 5]
9 thì đầu ra sẽ là
# creates a string
a1 = "alpharithms"

# create a new string with extra text
a2 = a1 + " is cool"
print[a2]

# use assignment operator to do the same
a1 += " is cool"
print[a1]

# output
alpharithms is cool
alpharithms is cool
0

Ví dụ này nhấn mạnh rằng quyền ưu tiên của toán tử hợp lệ ngay cả khi xử lý các chuỗi. Để thêm khoảng cách giữa 5 bản sao như dự định, chúng tôi cần thêm dấu ngoặc đơn để chỉ định một thứ tự hoạt động khác như vậy

# Create an example string
s1 = "alpharithms"
print[s1]

# concatenate some text
s1 += " is cool."
print[s1]

# output
alpharithms
alpharithms is cool.
0

Ở đây chúng ta thấy đầu ra được trả lại như mong đợi. Bằng cách thêm các ký tự

# creates a string
a1 = "alpharithms"

# create a new string with extra text
a2 = a1 + " is cool"
print[a2]

# use assignment operator to do the same
a1 += " is cool"
print[a1]

# output
alpharithms is cool
alpharithms is cool
1 và
# creates a string
a1 = "alpharithms"

# create a new string with extra text
a2 = a1 + " is cool"
print[a2]

# use assignment operator to do the same
a1 += " is cool"
print[a1]

# output
alpharithms is cool
alpharithms is cool
2 xung quanh thao tác
# creates a string
a1 = "alpharithms"

# create a new string with extra text
a2 = a1 + " is cool"
print[a2]

# use assignment operator to do the same
a1 += " is cool"
print[a1]

# output
alpharithms is cool
alpharithms is cool
3, chúng tôi thêm ký tự khoảng trắng trước khi tạo 5 bản sao của chuỗi

Ví dụ 4. Đầu vào của người dùng chuyển đổi thành chuỗi

Khi chấp nhận đầu vào của người dùng trong Python, mọi đầu vào do người dùng cung cấp sẽ được chuyển đổi thành một chuỗi. Ví dụ: đoạn mã sau nhắc người dùng nhập một số sẽ được nhân với giá trị

# creates a string
a1 = "alpharithms"

# create a new string with extra text
a2 = a1 + " is cool"
print[a2]

# use assignment operator to do the same
a1 += " is cool"
print[a1]

# output
alpharithms is cool
alpharithms is cool
4

# Create an example string
s1 = "alpharithms"
print[s1]

# concatenate some text
s1 += " is cool."
print[s1]

# output
alpharithms
alpharithms is cool.
1

Ở đây, chúng tôi đã nhập giá trị

# creates a string
a1 = "alpharithms"

# create a new string with extra text
a2 = a1 + " is cool"
print[a2]

# use assignment operator to do the same
a1 += " is cool"
print[a1]

# output
alpharithms is cool
alpharithms is cool
4 tại dấu nhắc và nhận thấy giá trị trả về là
# creates a string
a1 = "alpharithms"

# create a new string with extra text
a2 = a1 + " is cool"
print[a2]

# use assignment operator to do the same
a1 += " is cool"
print[a1]

# output
alpharithms is cool
alpharithms is cool
6 — rõ ràng không phải là phép tính chính xác của
# creates a string
a1 = "alpharithms"

# create a new string with extra text
a2 = a1 + " is cool"
print[a2]

# use assignment operator to do the same
a1 += " is cool"
print[a1]

# output
alpharithms is cool
alpharithms is cool
7. Vấn đề là python diễn giải giá trị do người dùng nhập vào của
# creates a string
a1 = "alpharithms"

# create a new string with extra text
a2 = a1 + " is cool"
print[a2]

# use assignment operator to do the same
a1 += " is cool"
print[a1]

# output
alpharithms is cool
alpharithms is cool
4 dưới dạng một chuỗi, dẫn đến một thao tác tương đương với
# creates a string
a1 = "alpharithms"

# create a new string with extra text
a2 = a1 + " is cool"
print[a2]

# use assignment operator to do the same
a1 += " is cool"
print[a1]

# output
alpharithms is cool
alpharithms is cool
9, như được hiển thị ở trên, tạo ra 3 bản sao của chuỗi đầu vào

Vấn đề này có thể được giải quyết bằng cách chuyển đổi đầu vào của người dùng dự kiến ​​là dữ liệu số thành dữ liệu số trước khi thực hiện các phép tính số học. Ví dụ: đoạn mã sau sẽ dẫn đến kết quả mong đợi

# Create an example string
s1 = "alpharithms"
print[s1]

# concatenate some text
s1 += " is cool."
print[s1]

# output
alpharithms
alpharithms is cool.
2

Ví dụ x. Sử dụng các đối tượng mảng byte để thao tác chuỗi

Python tạo các bản sao mới của bất kỳ chuỗi nào trong đó các thao tác thay đổi được thực hiện. Là một mô tả ngụ ý rộng rãi - Python phân bổ bộ nhớ mới khi các chuỗi bị thay đổi. Như vậy, việc thực hiện một số lượng lớn thao tác chuỗi có thể trở thành gánh nặng cho bộ nhớ. Để giải quyết vấn đề này, các mảng byte có thể được tạo như vậy

# Create an example string
s1 = "alpharithms"
print[s1]

# concatenate some text
s1 += " is cool."
print[s1]

# output
alpharithms
alpharithms is cool.
3

Chúng tôi có toàn bộ bài viết dành riêng cho chủ đề sử dụng các đối tượng byteary Python. Hãy xem nó để tìm hiểu thêm về chức năng tích hợp sẵn này của Python và cách nó liên quan đến thao tác chuỗi

Suy nghĩ cuối cùng

Chuỗi Python chỉ là một trong nhiều loại dữ liệu được cung cấp cho các nhà phát triển. Các quyết định được đưa ra trong quá trình phát triển của Python ưu tiên sự dễ dàng về cú pháp so với. ưu tiên khái niệm sao cho có thể sử dụng các cú pháp hơi kỳ quặc như sử dụng toán tử

# create a string
s1 = "alpharithms"

# attempt to remove the s from the end
s1[-1] = ""

TypeError: 'str' object does not support item assignment
6 để tạo các bản sao của chuỗi. Tuy nhiên, xa lạ so với các ngôn ngữ lập trình phổ biến khác, cách tiếp cận này chắc chắn là thuận tiện

Ở đây chúng ta đã thấy cách sử dụng các toán tử số học để thao tác các chuỗi Python. Lỗi phổ biến nhất là khi cố gắng nhân thông qua các giá trị dấu phẩy động hoặc tạo bản sao thay vì giá trị số từ đầu vào của người dùng. Ghi nhớ những điều này có thể giúp tận dụng sức mạnh của cú pháp thao tác chuỗi Python mà không tạo ra một

# create a string
s1 = "alpharithms"

# attempt to remove the s from the end
s1[-1] = ""

TypeError: 'str' object does not support item assignment
4

Làm cách nào để chuyển đổi chuỗi thành int Python?

Để chuyển đổi hoặc ép kiểu chuỗi thành số nguyên trong Python, bạn sử dụng hàm tích hợp int[] . Hàm nhận tham số là chuỗi ban đầu bạn muốn chuyển đổi và trả về số nguyên tương đương với giá trị bạn đã truyền. Cú pháp chung trông giống như thế này. int["str"].

Chúng ta có thể thực hiện các phép toán trên chuỗi trong Python không?

Có, toán tử số học có thể được sử dụng với chuỗi trong Python .

Làm cách nào để chuyển đổi chuỗi thành hàm trong Python?

Chuỗi thành hàm Sử dụng hàm eval[] Trong Python . Ở đây, chuỗi đầu vào là tên của hàm. Trong hàm eval[], chúng ta sẽ truyền tên của hàm và dấu '[]' được phân tách bằng ký hiệu cộng ' + '.

Chủ Đề