私はパイソンのオンラインコースに従っていますが、私たちは現在シーザー暗号に取り組んでいます。私は、このサイトのトピックで多くの質問に答えましたが、私のコードのような以前の関数を使用しなければならないという注意点はありません。最初の2つの関数は、複数の入力を使ってそれらをテストしたときに正常に動作しますが、最後の関数を追加すると、暗号化された部分文字列が見つからないというエラーが発生します。私はこの最後の部分のために何をすべきかについて迷っています。誰かが正しい方向に私を振る舞う提案がありますか?シーザー暗号で前提条件関数
def alphabet_position(letter):
alphabet ="abcdefghijklmnopqrstuvwxyz" #Lists alphabet for a key
lower_letter = letter.lower() #Makes any input lowercase.
return alphabet.index(lower_letter) #Returns the position of input as a number.
def rotate_character(char, rot):
alphabet = "abcdefghijklmnopqrstuvwxyz"
if char.isalpha():
a = alphabet_position(char)
a = (a + rot) % 26 #needs modulo
a = (alphabet[a])
if char.isupper():
a = a.title()
return a
else:
return char
def encrypt(text, rot):
list1 = ""
for char in text:
list1 += rotate_character(text, rot)
return list1
def main():
x = input("Type a message: ")
y = int(input("Rotate by: "))
#result = rotate_character(x, y) #Not needed once encrypt function works.
result = encrypt(x, y)
print (result)
if __name__ == '__main__':
main()
あなたの代わりに文字列での検索の文字のASCIIコードを取得するには、 'ord'と' chr'を使用する必要があります。また、 'codecs.encode(" foo "、" rot13 ")を使うと1行で同じことができます。 –
@ Jean-FrançoisFabre私はあなたが正しいとは疑いがありませんが、これは初心者ではないクラスで教えられていない関数やメソッドを使用してもらいたいです。私は将来の参考のためにそれらを研究しますが、ありがとう! –