Update using passed parameters instead of global variables.
This commit is contained in:
		
							parent
							
								
									baa81c46d1
								
							
						
					
					
						commit
						024c033ac2
					
				@ -1,4 +1,4 @@
 | 
			
		||||
# Python Caeser Cipher Helper v1.0.2
 | 
			
		||||
# Python Caeser Cipher Helper v1.1.0
 | 
			
		||||
# Usage (encrypt): python3 caeser-cipher.py encrypt secretmessage
 | 
			
		||||
# Usage (decrypt): python3 caeser-cipher.py decrypt secretmessage
 | 
			
		||||
 | 
			
		||||
@ -19,19 +19,14 @@ shiftNum = input("Please enter the shift you would like to use (Just hit enter i
 | 
			
		||||
ciphertext = re.sub (r'([^a-zA-Z]+?)', '', ciphertext) # Remove all non-letters.
 | 
			
		||||
ciphertext = ciphertext.lower() # Make it all lowercase. https://www.geeksforgeeks.org/isupper-islower-lower-upper-python-applications/
 | 
			
		||||
letters = list(string.ascii_lowercase) # Use a list of lowercase letters. https://stackoverflow.com/questions/43918437/how-to-iterate-through-the-alphabet
 | 
			
		||||
letterCount = 0 # Set variable for keeping track of which letter in the ciphertext we're on.
 | 
			
		||||
letterPos = 0 # Set variable for keeping track of the letter's position in the alphabet.
 | 
			
		||||
answer = "" # The solution.
 | 
			
		||||
commonletter = 0
 | 
			
		||||
 | 
			
		||||
def encrypt():
 | 
			
		||||
    # Grab global variables.
 | 
			
		||||
    global ciphertext
 | 
			
		||||
    global shiftNum
 | 
			
		||||
    global letters
 | 
			
		||||
    global letterCount
 | 
			
		||||
    global letterPos
 | 
			
		||||
    global answer
 | 
			
		||||
def encrypt(ciphertext, shiftNum, letters): # Grab parameters
 | 
			
		||||
 | 
			
		||||
    # Create local variables for this function.
 | 
			
		||||
 | 
			
		||||
    letterCount = 0
 | 
			
		||||
    letterPos = 0
 | 
			
		||||
    answer = ""
 | 
			
		||||
 | 
			
		||||
    for c in ciphertext: # For every letter in the ciphertext
 | 
			
		||||
        while letterPos < 26: # While the letter's position in the alphabet is less than 26 (and thus valid), continue.
 | 
			
		||||
@ -56,16 +51,13 @@ def encrypt():
 | 
			
		||||
    print("\nYour enciphered text is: " + answer)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def decrypt():
 | 
			
		||||
def decrypt(ciphertext, shiftNum, letters, commonletter): # Grab parameters
 | 
			
		||||
 | 
			
		||||
    # Grab global variables.
 | 
			
		||||
    global ciphertext
 | 
			
		||||
    global shiftNum
 | 
			
		||||
    global letters
 | 
			
		||||
    global letterCount
 | 
			
		||||
    global letterPos
 | 
			
		||||
    global answer
 | 
			
		||||
    global commonletter
 | 
			
		||||
    # Create local variables for this function.
 | 
			
		||||
 | 
			
		||||
    letterCount = 0
 | 
			
		||||
    letterPos = 0
 | 
			
		||||
    answer = ""
 | 
			
		||||
 | 
			
		||||
    for c in ciphertext: # For every letter in the ciphertext
 | 
			
		||||
        while letterPos < 26: # While the letter's position in the alphabet is less than 26 (and thus valid), continue.
 | 
			
		||||
@ -90,13 +82,13 @@ def decrypt():
 | 
			
		||||
    print("\nYour decrypted text is: " + answer)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def freq():
 | 
			
		||||
    # Grab global variables.
 | 
			
		||||
    global ciphertext
 | 
			
		||||
    global commonletter
 | 
			
		||||
    global letterPos
 | 
			
		||||
    global shiftNum
 | 
			
		||||
    print(shiftNum)
 | 
			
		||||
def freq(ciphertext):
 | 
			
		||||
    # Create local variables for this function.
 | 
			
		||||
 | 
			
		||||
    commonletter = 0
 | 
			
		||||
    letterCount = 0
 | 
			
		||||
    letterPos = 0
 | 
			
		||||
    answer = ""
 | 
			
		||||
 | 
			
		||||
    commonletter = collections.Counter(ciphertext).most_common()[0][0] # Find most common letter and thus the shift https://stackoverflow.com/questions/47251934/how-to-count-the-most-frequent-letter-in-a-string
 | 
			
		||||
 | 
			
		||||
@ -113,13 +105,13 @@ def freq():
 | 
			
		||||
 | 
			
		||||
            letterPos = letterPos + 1 # Iterate through letter positions in the alphabet. (neccessary to find one that matches.)
 | 
			
		||||
 | 
			
		||||
    decrypt() # Decrypt using the frequency found in here.
 | 
			
		||||
    decrypt(ciphertext, shiftNum, letters, commonletter) # Decrypt using the frequency found in here.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if action == "encrypt":
 | 
			
		||||
    encrypt()
 | 
			
		||||
    encrypt(ciphertext, shiftNum, letters) # Start the encrypt() function while passing 3 variables as parameters.
 | 
			
		||||
if action == "decrypt":
 | 
			
		||||
    if shiftNum == "":
 | 
			
		||||
        freq()
 | 
			
		||||
        freq(ciphertext)
 | 
			
		||||
    else:
 | 
			
		||||
        decrypt()
 | 
			
		||||
        decrypt(ciphertext, shiftNum, letters, commonletter)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										9
									
								
								passing-parms.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								passing-parms.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,9 @@
 | 
			
		||||
def no_side_effects(cities, cows):
 | 
			
		||||
    print(cities)
 | 
			
		||||
    cities = cities + ["Birmingham", "Bradford"]
 | 
			
		||||
    print(cities)
 | 
			
		||||
    print(cows)
 | 
			
		||||
 | 
			
		||||
locations = ["London", "Leeds", "Glasgow", "Sheffield"]
 | 
			
		||||
 | 
			
		||||
no_side_effects(locations, "Fred")
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user