Tôi có một chuỗi chứa các chữ cái và dấu chấm câu. Tôi đang cố gắng chỉ thay thế các chữ cái trong chuỗi này bằng các chữ cái khác. Hàm tôi đã phát triển chỉ hoạt động với các chuỗi chứa các chữ cái. Lỗi logic xảy ra nếu bao gồm các số; lỗi thời gian chạy xảy ra nếu bao gồm các ký tự dấu chấm câu. Có cách nào để tôi có thể làm cho hàm của mình bỏ qua dấu câu và giữ nguyên nó trong khi chỉ hoạt động trên các chữ cái không?
#Tạo biến chuỗi, ABjumbler tạo bảng chữ cái được dịch chuyển x đơn vị sang phải
#ABshifter chuyển đổi một chuỗi bằng cách sử dụng loại này sang loại khác
textObject = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj."
văn bản nhỏ = 'abcde'
bảng chữ cái = danh sách(['a','b','c','d','e','f','g','h','i','j','k',' l','m','n','o','p','q','r','s','t','u','v','w','x' ,'y','z'])
def ABjumbler(bảng chữ cái, x):
tập mới = []
tôi=0
j=0
trong khi tôi<(len(bảng chữ cái)-x):
Freshset.extend(bảng chữ cái[i+x])
i+=1
trong khi j<>
Freshset.extend(bảng chữ cái[j]) #extend [0]
j+=1 #change j = thành 1, kéo dài thêm [1], sau đó thêm [2], rồi chấm dứt khi đạt đến x
bảng chữ cái = tập mới
trả lại bảng chữ cái
newAlphabet = ABjumbler(bảng chữ cái, 2)
def ABshifter(văn bản, bảng chữ cái đã dịch chuyển):
tập mới = []
cho các chữ cái trong văn bản:
vị trí = text.index(chữ cái)
Freshset.extend(shiftedalphabet[position])
cuối cùng = ''.join(freshset)
trở lại trận chung kết
in ABshifter(smalltext, newAlphabet)
Đầu tiên, có một số cách nhanh hơn/dễ dàng hơn để thực hiện chuyển đổi mà bạn muốn.
Nhưng để trả lời câu hỏi của bạn, bạn chỉ cần thêm:
nếu không phải là letter.isalpha():
Tiếp tục
str.isalpha()
Trả về nếu chuỗi chỉ bao gồm các chữ cái ĐÚNG VẬY
.
Tôi là một lập trình viên xuất sắc, rất giỏi!