亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在列表中移動字符

在列表中移動字符

守候你守候我 2022-06-28 16:37:18
我想用某個指定的位置移動字符 Ex :Input = ['banana', 7]這里 7 是移動位置的步驟。Output = utgtgt. 它應該適用于任何用戶輸入。用戶輸入可以是小寫和大寫。數值是需要移動的位置數代碼:input_list = ['banana', 7]message=input_list[0]n=input_list[1]list1=[]for i in message:    ch = i    x = chr(ord(ch)-n)    list1.append(x)print("".join(list1))
查看完整描述

3 回答

?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

您應該計算給定字符到 的序數的偏移量,將其'a'移動n,得到它的模 26,然后通過添加 back 的序數來獲得移動字符的序數'a'

改變:

x = chr(ord(ch)-n)

至:

x = chr((ord(ch) - ord('a') - n) % 26 + ord('a'))

要同時處理大寫字母,您可以先有條件地設置基本字符:

base = ord('a' if ch.islower() else 'A')
x = chr((ord(ch) - base - n) % 26 + base)

演示:https ://repl.it/@blhsing/ClosedElectricEquation


查看完整回答
反對 回復 2022-06-28
?
POPMUISE

TA貢獻1765條經驗 獲得超5個贊

在@blhsing 答案的基礎上,您可以通過列表理解將您的輸出放在一行中。


"".join([chr((ord(ch) - ord('a') - n) % 26 + ord('a'))for ch in message])

>>> 'utgtgt'


查看完整回答
反對 回復 2022-06-28
?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

小寫字母僅占用代碼點 97 到 122。如果ord(ch) - n小于 97,則必須環繞。


for ch in message:

    new = ord(ch) - n

    if new < ord('a'):

        new += 26

    list1.append(chr(new))


查看完整回答
反對 回復 2022-06-28
  • 3 回答
  • 0 關注
  • 123 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號