>

암호화 프로그램을 만들려고합니다

def intro():
    msg = input("Enter the message you wish to encrypt: ")
    return msg
def shift(msg):
    alpha = ['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']
    rotate = int(input("The level of the encryption?: "))
    text = ""
    for ch in msg:
        if ch == " " or ch == ".":
            pass
        elif msg == "$":
            print("nah")
        else:
            index = alpha.index(ch)
            newindex = index + rotate
            new= alpha[newindex]
            text += new
    return text

def start():
    msg = intro()
    text = shift(msg)
    print("Your encryptions is: " + text)

start()

인덱스가 범위를 벗어남 오류없이 목록을 반복하는 방법을 알 수 없습니다. 예를 들어 "z"를 입력하면 "a"로 이동합니다. 또한 사용자 입력이 끝날 때까지 프로그램을 반복해야합니다. 몇 달 전에 파이썬으로 코딩을 시작했습니다. 그래서 어떤 도움을 주셔서 감사합니다! 초보자

  • 답변 # 1

    이 라인을 추가하기 만하면됩니다

    newindex %= len(alpha)
    
    

    상세한 변경 (컨텍스트 포함)

    index = alpha.index(ch)
    newindex = index + rotate
    new= alpha[newindex]
    text += new
    
    

    to

    index = alpha.index(ch)
    newindex = index + rotate
    newindex %= len(alpha) # <--- this is the new line
    new= alpha[newindex]
    text += new
    
    

    이것은 자동으로 새로운 인덱스 루프를 만들어서 끝을지나 가지 않습니다!

    작업 예

    >> Enter the message you wish to encrypt: 'xyz'
    >> The level of the encryption?: 2
    >> Your encryptions is: zab
    
    

  • 답변 # 2

    계수 연산자를 사용하여 목록 길이를 벗어난 색인을 감싸십시오 :

    newindex = (index + rotate) % len(alpha)
    
    

    반복하려면 while True: 를 사용하십시오  루프 및 break 사용  끝내기 위해.

    def start():
        while True:
            msg = intro()
            if msg == '':
                break
            text = shift(msg)
            print("Your encryptions is: " + text)
    
    

    이것은 사용자가 빈 줄을 입력하면 끝납니다.

  • 이전 dependency injection - ioc/di가 포함 된 ravendb - idocumentstore 또는 i (async) documentsession?
  • 다음 machine learning - IsolationForest를 사용하여 고차원 데이터 집합의 특이 치를 탐지하는 올바른 방법