Created
February 1, 2018 01:42
-
-
Save peta909/ca5ee60f7945cd41b2634db3fb80bf4f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import struct | |
# Rotate left: 0b1001 --> 0b0011 | |
rol = lambda val, r_bits, max_bits: \ | |
(val << r_bits%max_bits) & (2**max_bits-1) | \ | |
((val & (2**max_bits-1)) >> (max_bits-(r_bits%max_bits))) | |
# Rotate right: 0b1001 --> 0b1100 | |
ror = lambda val, r_bits, max_bits: \ | |
((val & (2**max_bits-1)) >> r_bits%max_bits) | \ | |
(val << (max_bits-(r_bits%max_bits)) & (2**max_bits-1)) | |
value = 0xC000 | |
i = 8 #no to rotate | |
max_bits = 32 #buffer size | |
print "rol",rol(value, i, max_bits) | |
value = 0x0003 | |
print "ror",ror(value, i, max_bits) | |
#how-to-convert-integer-value-to-array-of-four-bytes-in-python | |
print [hex(0x12345678 >> i & 0xff) for i in (24,16,8,0)] | |
#['0x12', '0x34', '0x56', '0x78'] | |
tup_result = struct.unpack("4b", struct.pack(">I", 0x12345678)) | |
#result will be in a tuple | |
#note the Endianess ">" | |
list_result = list(tup_result) | |
print [hex(x) for x in list_result] | |
tup_result = struct.unpack("4b", struct.pack("<I", 0x12345678)) | |
#result will be in a tuple | |
#note the Endianess "<" | |
list_result = list(tup_result) | |
print [hex(x) for x in list_result] | |
#rotate a 4 byte buffer | |
aa= bytearray(list_result) | |
int_result = struct.unpack('I', aa)[0] | |
int_result = ror(int_result,8,32) | |
tup_result = struct.unpack("4b", struct.pack("I", int_result)) | |
result = list(tup_result) | |
print [hex(x) for x in result] | |
#---------------------------#---------------------------#---------------------------#---------------------------#---------------------------#---------------------------#--------------------------- | |
# import is used to make specialty functions available | |
# These are called modules | |
import random | |
import sys | |
import os | |
# Hello world is just one line of code | |
# print() outputs data to the screen | |
print("Hello World") | |
''' | |
This is a multi-line comment | |
''' | |
# A variable is a place to store values | |
# Its name is like a label for that value | |
name = "Derek" | |
print(name) | |
# A variable name can contain letters, numbers, or _ | |
# but can't start with a number | |
# There are 5 data types Numbers, Strings, List, Tuple, Dictionary | |
# You can store any of them in the same variable | |
name = 15 | |
print(name) | |
# The arithmetic operators +, -, *, /, %, **, // | |
# ** Exponential calculation | |
# // Floor Division | |
print("5 + 2 =", 5+2) | |
print("5 - 2 =", 5-2) | |
print("5 * 2 =", 5*2) | |
print("5 / 2 =", 5/2) | |
print("5 % 2 =", 5%2) | |
print("5 ** 2 =", 5**2) | |
print("5 // 2 =", 5//2) | |
# Order of Operation states * and / is performed before + and - | |
print("1 + 2 - 3 * 2 =", 1 + 2 - 3 * 2) | |
print("(1 + 2 - 3) * 2 =", (1 + 2 - 3) * 2) | |
# A string is a string of characters surrounded by " or ' | |
# If you must use a " or ' between the same quote escape it with \ | |
quote = "\"Always remember your unique," | |
# A multi-line quote | |
multi_line_quote = ''' just | |
like everyone else" ''' | |
print(quote + multi_line_quote) | |
# To embed a string in output use %s | |
print("%s %s %s" % ('I like the quote', quote, multi_line_quote)) | |
# To keep from printing newlines use end="" | |
#print("I don't like ",end="") # Doesnt work w python 2.7 | |
print("newlines") | |
# You can print a string multiple times with * | |
print('\n' * 5) | |
# LISTS ------------- | |
# A list allows you to create a list of values and manipulate them | |
# Each value has an index with the first one starting at 0 | |
grocery_list = ['Juice', 'Tomatoes', 'Potatoes', 'Bananas'] | |
print('The first item is', grocery_list[1]) | |
# You can change the value stored in a list box | |
grocery_list[0] = "Green Juice" | |
print(grocery_list) | |
# You can get a subset of the list with [min:up to but not including max] | |
print(grocery_list[1:3]) | |
# You can put any data type in a a list including a list | |
other_events = ['Wash Car', 'Pick up Kids', 'Cash Check'] | |
to_do_list = [other_events, grocery_list] | |
print(to_do_list) | |
# Get the second item in the second list (Boxes inside of boxes) | |
print(to_do_list[1][1]) | |
# You add values using append | |
grocery_list.append('onions') | |
print(to_do_list) | |
# Insert item at given index | |
grocery_list.insert(1, "Pickle") | |
# Remove item from list | |
grocery_list.remove("Pickle") | |
# Sorts items in list | |
grocery_list.sort() | |
# Reverse sort items in list | |
grocery_list.reverse() | |
# del deletes an item at specified index | |
del grocery_list[4] | |
print(to_do_list) | |
# We can combine lists with a + | |
to_do_list = other_events + grocery_list | |
print(to_do_list) | |
# Get length of list | |
print(len(to_do_list)) | |
# Get the max item in list | |
print(max(to_do_list)) | |
# Get the minimum item in list | |
print(min(to_do_list)) | |
# TUPLES ------------- | |
# Values in a tuple can't change like lists | |
pi_tuple = (3, 1, 4, 1, 5, 9) | |
# Convert tuple into a list | |
new_tuple = list(pi_tuple) | |
# Convert a list into a tuple | |
# new_list = tuple(grocery_list) | |
# tuples also have len(tuple), min(tuple) and max(tuple) | |
# DICTIONARY or MAP ------------- | |
# Made up of values with a unique key for each value | |
# Similar to lists, but you can't join dicts with a + | |
super_villains = {'Fiddler' : 'Isaac Bowin', | |
'Captain Cold' : 'Leonard Snart', | |
'Weather Wizard' : 'Mark Mardon', | |
'Mirror Master' : 'Sam Scudder', | |
'Pied Piper' : 'Thomas Peterson'} | |
print(super_villains['Captain Cold']) | |
# Delete an entry | |
del super_villains['Fiddler'] | |
print(super_villains) | |
# Replace a value | |
super_villains['Pied Piper'] = 'Hartley Rathaway' | |
# Print the number of items in the dictionary | |
print(len(super_villains)) | |
# Get the value for the passed key | |
print(super_villains.get("Pied Piper")) | |
# Get a list of dictionary keys | |
print(super_villains.keys()) | |
# Get a list of dictionary values | |
print(super_villains.values()) | |
# CONDITIONALS ------------- | |
# The if, else and elif statements are used to perform different | |
# actions based off of conditions | |
# Comparison Operators : ==, !=, >, <, >=, <= | |
# The if statement will execute code if a condition is met | |
# White space is used to group blocks of code in Python | |
# Use the same number of proceeding spaces for blocks of code | |
age = 30 | |
if age > 16 : | |
print('You are old enough to drive') | |
# Use an if statement if you want to execute different code regardless | |
# of whether the condition ws met or not | |
if age > 16 : | |
print('You are old enough to drive') | |
else : | |
print('You are not old enough to drive') | |
# If you want to check for multiple conditions use elif | |
# If the first matches it won't check other conditions that follow | |
if age >= 21 : | |
print('You are old enough to drive a tractor trailer') | |
elif age >= 16: | |
print('You are old enough to drive a car') | |
else : | |
print('You are not old enough to drive') | |
# You can combine conditions with logical operators | |
# Logical Operators : and, or, not | |
if ((age >= 1) and (age <= 18)): | |
print("You get a birthday party") | |
elif (age == 21) or (age >= 65): | |
print("You get a birthday party") | |
elif not(age == 30): | |
print("You don't get a birthday party") | |
else: | |
print("You get a birthday party yeah") | |
# FOR LOOPS ------------- | |
# Allows you to perform an action a set number of times | |
# Range performs the action 10 times 0 - 9 | |
for x in range(0, 10): | |
#print(x , ' ', end="") | |
print(x) | |
print('\n') | |
# You can use for loops to cycle through a list | |
grocery_list = ['Juice', 'Tomatoes', 'Potatoes', 'Bananas'] | |
for y in grocery_list: | |
print(y) | |
# You can also define a list of numbers to cycle through | |
for x in [2,4,6,8,10]: | |
print(x) | |
# You can double up for loops to cycle through lists | |
num_list =[[1,2,3],[10,20,30],[100,200,300]]; | |
for x in range(0,3): | |
for y in range(0,3): | |
print(num_list[x][y]) | |
# WHILE LOOPS ------------- | |
# While loops are used when you don't know ahead of time how many | |
# times you'll have to loop | |
random_num = random.randrange(0,100) | |
while (random_num != 15): | |
print(random_num) | |
random_num = random.randrange(0,100) | |
# An iterator for a while loop is defined before the loop | |
i = 0; | |
while (i <= 20): | |
if(i%2 == 0): | |
print(i) | |
elif(i == 9): | |
# Forces the loop to end all together | |
break | |
else: | |
# Shorthand for i = i + 1 | |
i += 1 | |
# Skips to the next iteration of the loop | |
continue | |
i += 1 | |
# FUNCTIONS ------------- | |
# Functions allow you to reuse and write readable code | |
# Type def (define), function name and parameters it receives | |
# return is used to return something to the caller of the function | |
def addNumbers(fNum, sNum): | |
sumNum = fNum + sNum | |
return sumNum | |
print(addNumbers(1, 4)) | |
# Can't get the value of rNum because it was created in a function | |
# It is said to be out of scope | |
# print(sumNum) | |
# If you define a variable outside of the function it works every place | |
newNum = 0; | |
def subNumbers(fNum, sNum): | |
newNum = fNum - sNum | |
return newNum | |
print(subNumbers(1, 4)) | |
# USER INPUT ------------- | |
print('What is your name?') | |
# Stores everything typed up until ENTER | |
name = sys.stdin.readline() | |
print('Hello', name) | |
# STRINGS ------------- | |
# A string is a series of characters surrounded by ' or " | |
long_string = "I'll catch you if you fall - The Floor" | |
# Retrieve the first 4 characters | |
print(long_string[0:4]) | |
# Get the last 5 characters | |
print(long_string[-5:]) | |
# Everything up to the last 5 characters | |
print(long_string[:-5]) | |
# Concatenate part of a string to another | |
print(long_string[:4] + " be there") | |
# String formatting | |
print("%c is my %s letter and my number %d number is %.5f" % ('X', 'favorite', 1, .14)) | |
# Capitalizes the first letter | |
print(long_string.capitalize()) | |
# Returns the index of the start of the string | |
# case sensitive | |
print(long_string.find("Floor")) | |
# Returns true if all characters are letters ' isn't a letter | |
print(long_string.isalpha()) | |
# Returns true if all characters are numbers | |
print(long_string.isalnum()) | |
# Returns the string length | |
print(len(long_string)) | |
# Replace the first word with the second (Add a number to replace more) | |
print(long_string.replace("Floor", "Ground")) | |
# Remove white space from front and end | |
print(long_string.strip()) | |
# Split a string into a list based on the delimiter you provide | |
quote_list = long_string.split(" ") | |
print(quote_list) | |
# FILE I/O ------------- | |
# Overwrite or create a file for writing | |
test_file = open("test.txt", "wb") | |
# Get the file mode used | |
print(test_file.mode) | |
# Get the files name | |
print(test_file.name) | |
# Write text to a file with a newline | |
test_file.write(bytes("Write me to the file\n", 'UTF-8')) | |
# Close the file | |
test_file.close() | |
# Opens a file for reading and writing | |
test_file = open("test.txt", "r+") | |
# Read text from the file | |
text_in_file = test_file.read() | |
print(text_in_file) | |
# Delete the file | |
os.remove("test.txt") | |
# CLASSES AND OBJECTS ------------- | |
# The concept of OOP allows us to model real world things using code | |
# Every object has attributes (color, height, weight) which are object variables | |
# Every object has abilities (walk, talk, eat) which are object functions | |
class Animal: | |
# None signifies the lack of a value | |
# You can make a variable private by starting it with __ | |
__name = None | |
__height = None | |
__weight = None | |
__sound = None | |
# The constructor is called to set up or initialize an object | |
# self allows an object to refer to itself inside of the class | |
def __init__(self, name, height, weight, sound): | |
self.__name = name | |
self.__height = height | |
self.__weight = weight | |
self.__sound = sound | |
def set_name(self, name): | |
self.__name = name | |
def set_height(self, height): | |
self.__height = height | |
def set_weight(self, height): | |
self.__height = height | |
def set_sound(self, sound): | |
self.__sound = sound | |
def get_name(self): | |
return self.__name | |
def get_height(self): | |
return str(self.__height) | |
def get_weight(self): | |
return str(self.__weight) | |
def get_sound(self): | |
return self.__sound | |
def get_type(self): | |
print("Animal") | |
def toString(self): | |
return "{} is {} cm tall and {} kilograms and says {}".format(self.__name, self.__height, self.__weight, self.__sound) | |
# How to create a Animal object | |
cat = Animal('Whiskers', 33, 10, 'Meow') | |
print(cat.toString()) | |
# You can't access this value directly because it is private | |
#print(cat.__name) | |
# INHERITANCE ------------- | |
# You can inherit all of the variables and methods from another class | |
class Dog(Animal): | |
__owner = None | |
def __init__(self, name, height, weight, sound, owner): | |
self.__owner = owner | |
self.__animal_type = None | |
# How to call the super class constructor | |
super(Dog, self).__init__(name, height, weight, sound) | |
def set_owner(self, owner): | |
self.__owner = owner | |
def get_owner(self): | |
return self.__owner | |
def get_type(self): | |
print ("Dog") | |
# We can overwrite functions in the super class | |
def toString(self): | |
return "{} is {} cm tall and {} kilograms and says {}. His owner is {}".format(self.get_name(), self.get_height(), self.get_weight(), self.get_sound(), self.__owner) | |
# You don't have to require attributes to be sent | |
# This allows for method overloading | |
def multiple_sounds(self, how_many=None): | |
if how_many is None: | |
print(self.get_sound) | |
else: | |
print(self.get_sound() * how_many) | |
spot = Dog("Spot", 53, 27, "Ruff", "Derek") | |
print(spot.toString()) | |
# Polymorphism allows use to refer to objects as their super class | |
# and the correct functions are called automatically | |
class AnimalTesting: | |
def get_type(self, animal): | |
animal.get_type() | |
test_animals = AnimalTesting() | |
test_animals.get_type(cat) | |
test_animals.get_type(spot) | |
spot.multiple_sounds(4) | |
#Troubleshoot/Debugging commands | |
''' | |
type() | |
https://docs.python.org/3/library/functions.html#type | |
dir() | |
https://docs.python.org/2/library/functions.html#dir | |
repr() | |
https://docs.python.org/2/library/repr.html | |
''' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment