#今日の問題: 文字列内の各アルファベットを10個後のものに変換せよ
ord()とchr()を使って解決していきます。
回答(Python3)
from icecream import ic # デバッグ用にicecreamをインポートしています。
def move_ten(st):
result = ""
for i in st:
ordI = ord(i)
if ordI >= 113:
result += chr(ordI - 16)
else:
result += chr(ordI + 10)
return result
ic(move_ten("testcase")) # "docdmkco"
ic(move_ten("codewars")) # "mynogkbc"
ic(move_ten("exampletesthere")) # "ohkwzvodocdrobo"
ic(move_ten("returnofthespacecamel")) # "bodebxypdroczkmomkwov"
ic(move_ten("bringonthebootcamp")) # "lbsxqyxdrolyydmkwz"
ic(move_ten("weneedanofficedog")) # "goxoonkxyppsmonyq"
ic(move_ten("qeneedanofficedog")) # "goxoonkxyppsmonyq"
結果
ic| move_ten("testcase"): 'docdmkco'
ic| move_ten("codewars"): 'mynogkbc'
ic| move_ten("exampletesthere"): 'ohkwzvodocdrobo'
ic| move_ten("returnofthespacecamel"): 'bodebxypdroczkmomkwov'
ic| move_ten("bringonthebootcamp"): 'lbsxqyxdrolyydmkwz'
ic| move_ten("weneedanofficedog"): 'goxoonkxyppsmonyq'
ic| move_ten("qeneedanofficedog"): 'aoxoonkxyppsmonyq'
ベターな回答:
BetterCode
def move_ten(st):
return ''.join(chr(ord(i)+10) if i<'q'
else chr(ord(i)-16) for i in st)
参照: Move 10 (Codewars)