私はCaesar-Cypher関数を作成しています。私のコースで使用している教科書から、これを行うために組み込みのord()関数とchr()関数を使用することをお勧めしました。それは最良の方法かもしれないし、そうでないかもしれない(間違いなく私が見たものからではない)が、あなたがしたいものだ。Caesar-cypher:ord()関数は文字列を受け取り、整数を受け取ると言う
私の問題は、forループでplaceholder変数をord()関数に送信すると、長さ1の文字列が返されるが、代わりに整数を受け取るというエラーが発生することです。私は変数cが 'i'の値を持っていることを確認する直前にprint関数を置いていますが、関係なく失敗するようです。ここで
は、私が作成した関数である:
def rotate_word(word, num):
count = 0
newWord = ''
while count < len(word):
for c in word:
print(c)
newWord += chr(((ord(c)) - (ord(num) -1)))
count += 1
print(newWord)
そして、これは私が受け取るエラーです:
rotate_word('ibm', -1)
i
Traceback (most recent call last):
File "<pyshell#95>", line 1, in <module>
rotate_word('ibm', -1)
File "<pyshell#94>", line 7, in rotate_word
newWord += chr(((ord(c)) - (ord(num) -1)))
TypeError: ord() expected string of length 1, but int found
このエラーが-1よりも、他の整数のために発生します。公平であるように、コード自体が私が望むことをしているかどうかは完全にはわかりません(私はこの部分を理解しようとしていましたが、この部分がなければ残りの部分を確実にするという点は見られません)。
「ord(num)」、「num」のみを使用しないでください:) – GAVD