Editing base64, Adding average file, Editing find_lcm (#673)

* avrage.py

calculate and print the avrage of number list.

* Update base64_cipher.py

encoding and decoding base64 without any module.

* Update and rename avrage.py to average.py

* update find_lcm algorithm

I made find_lcm more efficient form O(num1*num2) to O(min{num1,num2}).
This commit is contained in:
Michael Fried 2019-01-19 22:49:06 +02:00 committed by Chetan Kaushik
parent ac28125060
commit c92b02cfa3
3 changed files with 77 additions and 9 deletions

14
Maths/average.py Normal file
View File

@ -0,0 +1,14 @@
def average(nums):
sum = 0
n = 0
for x in nums:
sum += x
n += 1
avg = sum / n
print(avg)
def main():
average([2, 4, 6, 8, 20, 50, 70])
if __name__ == '__main__':
main()

View File

@ -1,10 +1,11 @@
def find_lcm(num_1, num_2): def find_lcm(num_1, num_2):
max = num_1 if num_1 > num_2 else num_2 max = num_1 if num_1 > num_2 else num_2
lcm = max
while (True): while (True):
if ((max % num_1 == 0) and (max % num_2 == 0)): if ((lcm % num_1 == 0) and (lcm % num_2 == 0)):
break break
max += 1 lcm += max
return max return lcm
def main(): def main():

View File

@ -1,11 +1,64 @@
import base64 def encodeBase64(text):
base64chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
r = "" #the result
c = 3 - len(text) % 3 #the length of padding
p = "=" * c #the padding
s = text + "\0" * c #the text to encode
i = 0
while i < len(s):
if i > 0 and ((i / 3 * 4) % 76) == 0:
r = r + "\r\n"
n = (ord(s[i]) << 16) + (ord(s[i+1]) << 8 ) + ord(s[i+2])
n1 = (n >> 18) & 63
n2 = (n >> 12) & 63
n3 = (n >> 6) & 63
n4 = n & 63
r += base64chars[n1] + base64chars[n2] + base64chars[n3] + base64chars[n4]
i += 3
return r[0: len(r)-len(p)] + p
def decodeBase64(text):
base64chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
s = ""
for i in text:
if i in base64chars:
s += i
c = ""
else:
if i == '=':
c += '='
p = ""
if c == "=":
p = 'A'
else:
if c == "==":
p = "AA"
r = ""
s = s + p
i = 0
while i < len(s):
n = (base64chars.index(s[i]) << 18) + (base64chars.index(s[i+1]) << 12) + (base64chars.index(s[i+2]) << 6) +base64chars.index(s[i+3])
r += chr((n >> 16) & 255) + chr((n >> 8) & 255) + chr(n & 255)
i += 4
return r[0: len(r) - len(p)]
def main(): def main():
inp = input('->') print(encodeBase64("WELCOME to base64 encoding"))
encoded = inp.encode('utf-8') #encoded the input (we need a bytes like object) print(decodeBase64(encodeBase64("WELCOME to base64 encoding")))
b64encoded = base64.b64encode(encoded) #b64encoded the encoded string
print(b64encoded)
print(base64.b64decode(b64encoded).decode('utf-8'))#decoded it
if __name__ == '__main__': if __name__ == '__main__':
main() main()