由于参数

时间:2015-11-14 13:19:44

标签: python

基本上我正在制作一个Caesar密码,但是当我添加函数并包含参数时,底部的while循环无法调用该函数。非常感谢帮助。

很抱歉,如果代码的格式看起来很奇怪,但我只需要修复函数和参数

提前致谢。

flag = 0

small_chars = [chr(item) for item in range(ord('a'), ord('z')+1)]
upper_chars = [item.upper() for item in small_chars]

def encryptionfunction(chr_item, is_upper_case):
    '''
    Cipher each chr_item.
    '''
    # setting orig and end order.
    if is_upper_case:
        orig_ord = ord('A')
        end_ord  = ord('Z')
    else:
        orig_ord = ord('a')
        end_ord  = ord('z')

    # calculating shift    
    temp_ord = ord(chr_item)+shift
    # calculating offset order with modulo.
    # char is after end_ord, calculating offset
    num_of_chars = 26
    offset_ord = (temp_ord - end_ord - 1)%num_of_chars
    return chr(orig_ord + offset_ord)

# enable while loop to repeat until status not 'y'
    status = 'y'
    while status == 'y':
    # enter word to cipher.
        word = input("Word: ")
    # enter char shift
    shift = 5
    print

    # create cipher list variable
    cipher = list()
    # loop trough each char in word
    for chr_item in word:
        # encode just letters.
        # replace non-alfa with underscore: "_"
        if chr_item in upper_chars or chr_item in small_chars:
            # set is_uppser_case to True for upper case chars.
            is_upper_case = (chr_item in upper_chars) and True
            # cipher char.
            temp_chr = encryptionfunction(chr_item, is_upper_case)
            # append ciphered char to list
            cipher.append(temp_chr)
        elif chr_item is ' ':
            cipher.append(chr_item)
        else:
            cipher.append('_')

    # print ciphered word
    print (''.join(cipher))

def decryptionfunction(chr_item, is_upper_case):
    '''
    Cipher each chr_item.
    '''
    # setting orig and end order.
    if is_upper_case:
        orig_ord = ord('A')
        end_ord  = ord('Z')
    else:
        orig_ord = ord('a')
        end_ord  = ord('z')

    # calculating shift    
    temp_ord = ord(chr_item)+shift
    # calculating offset order with modulo.
    # char is after end_ord, calculating offset
    num_of_chars = 26
    offset_ord = (temp_ord - end_ord - 1)%num_of_chars
    return chr(orig_ord - offset_ord)

# enable while loop to repeat until status not 'y'
    status = 'y'
    while status == 'y':
    # enter word to cipher.
        word = input("Word: ")
    # enter char shift
    shift = 5
    print

    # create cipher list variable
    cipher = list()
    # loop trough each char in word
    for chr_item in word:
        # encode just letters.
        # replace non-alfa with underscore: "_"
        if chr_item in upper_chars or chr_item in small_chars:
            # set is_uppser_case to True for upper case chars.
            is_upper_case = (chr_item in upper_chars) and True
            # cipher char.
            temp_chr = encryptionfunction(chr_item, is_upper_case)
            # append ciphered char to list
            cipher.append(temp_chr)
        elif chr_item is ' ':
            cipher.append(chr_item)
        else:
            cipher.append('_')

    # print ciphered word
    print (''.join(cipher))


while flag == 0:
    answer=input("Would you like to encrypt(1) or decrypt(2)?: ")

    if answer == "encrypt":
        flag = 1
        encryptionfunction(chr_item, is_upper_case)

    elif answer == "1":
        flag = 1
        encryptionfunction(chr_item, is_upper_case)

    elif answer == "decrypt":
        flag = 2
        decryptionfunction(chr_item, is_upper_case)

    elif answer == "2":
        flag = 2
        decryptionfunction(chr_item, is_upper_case)

    else:
        print("Please enter a vaild answer. ")

0 个答案:

没有答案