python caesar chr和ord没有换行符,只是在字母表中迭代

python caesar chr和ord没有换行符,只是在字母表中迭代,python,cs50,caesar-cipher,Python,Cs50,Caesar Cipher,我的凯撒密码有问题 1) 我不知道如何检查一个字符是否是标点符号,如何打印而不求和 2) 在同一行上打印字符,但完成后返回换行符 3) 用大数字重复字母表返回标点符号,我如何才能只返回一个字符 import sys import string def main(): if len(sys.argv) != 2: print("Usage: caesar.py k") else: k = int(sys.argv[1])

我的凯撒密码有问题

1) 我不知道如何检查一个字符是否是标点符号,如何打印而不求和

2) 在同一行上打印字符,但完成后返回换行符

3) 用大数字重复字母表返回标点符号,我如何才能只返回一个字符

import sys
import string

def main(): 

    if len(sys.argv) != 2:
        print("Usage: caesar.py k")

    else:


        k = int(sys.argv[1])

        if k == 1 or k <= 26:

            text = input("plaintext: ");
            j = len(text)

            for i in range(j):
                #check if is a character
                if text[i].isalpha:
                    if text[i].islower():
                        print(chr(ord(text[i]) + k),end = "")
                    if text[i].isupper():
                        print(chr(ord(text[i]) + k),end = "")
                elif text[i].punctuation():
                    print(text[i])

        else:
            print("You have to introduce a number between 1 and 26")

main()
导入系统 导入字符串 def main(): 如果len(sys.argv)!=2: 打印(“用法:caesar.py k”) 其他: k=int(sys.argv[1]) 如果k==1或k请尝试以下代码:

import string


def encrypt_ceasar(s, shift):
    assert abs(shift) < 26, 'shift is between -25 and 25 (inclusive)'
    encrypted_s = ''
    for char in s:
        if char.isalpha():
            is_upper = char.isupper()
            char = char.lower()
            pos_alphabet = ord(char) - ord('a')
            new_pos = (pos_alphabet + shift) % 26
            encryted_char = chr(ord('a') + new_pos)
            if is_upper:
                encryted_char = encryted_char.upper()
            encrypted_s += encryted_char
        else:
            encrypted_s += char
    return encrypted_s


def decrypt_ceasar(s, shift):
    return encrypt_ceasar(s, -shift)


if __name__ == "__main__":
    s = 'AbC1$de#zy'
    encrypted_s = encrypt_ceasar(s, 3)
    print('s:', s)
    print('encrypted_s:', encrypted_s)
    print('again s:', decrypt_ceasar(encrypted_s, 3))

当然现在我可以了,在我不能投票之前,因为我没有足够的声誉
s: AbC1$de#zy
encrypted_s: DeF1$gh#cb
again s: AbC1$de#zy