Python/Basic Code
(→print) |
(→Dictionaries) |
||
Line 394: | Line 394: | ||
> 105 | > 105 | ||
> 106</nowiki> | > 106</nowiki> | ||
+ | |||
+ | <nowiki>my_dict = { | ||
+ | "Crypto": "ETH", | ||
+ | "Balance": 3.092, | ||
+ | "Value": 4200 | ||
+ | } | ||
+ | for key in my_dict: | ||
+ | print key, my_dict[key] | ||
+ | |||
+ | >Balance 3.092 | ||
+ | Crypto ETH | ||
+ | Value 4200</nowiki> | ||
==keys and values== | ==keys and values== |
Revision as of 01:45, 11 May 2021
reserved words
These are some words that you should not use in python as they are reserved.
- list
- reserved word that should not be used as a variable name.
variables
- variables can be integers, floats, or boolean. Integers are whole numbers, floats are numbers with remainders, boolean is either True of False.
variable=integer
float vars
If you want the fraction included in the var, you need to define it as a float, otherwise python will automatically round the result to a whole number.
floating_var = float(7)/2
This will give you the fraction from dividing 7/2.
convert int to string
age = 13 print str(age)
convert string to int
n1 = "100" n2 = "10" int_addition = int(n1) + int(n2)
convert to float
n1 = "7.5" print float(n1)
verify is alpha (letters) only
variable_name.isalpha() ie. if variable.isalpha():
arithmetic operators
add/subtract/multiply/divide/exponentiation/modulo
exponentiation (exponential, similar to square roots)
2 ** 3=8 (2*2*2)
modulo (remainder)
5 % 2=1 (5/2 = 2 with a remainder of 1)
shorthand
+= add vars and update first var ie. sandwich_price += sales_tax -= subtract vars and update first var ie. money_in_wallet -= sandwich_price
comments
- # for single like quote or """ quote """ for multi line quote
#quote """quote quote"""
display output
print "Hello World"
display specific letter, left to right, 0 forward
print "TEST"[0] = "T"
trailing comma
adding a trailing comma ensures that we keep printing on the same line.
print number,
strings
multi-line string
- for strings that span multiple lines, use triple quotes
address_string = """136 Whowho Rd Apt 7 Whosville, WZ 44494"""
string continuation
- it appears you can continue a string by using
\
though i've only seen this behavior using string concatenation
ie. print "Ah, so your name is %s, your quest is %s, " \ "and your favorite color is %s." % (name, quest, color)
string methods
- len() ; lower() ; upper() ; str()
len() = get length of string - applies to anything within the parentheses
len(length) = 6
lower() = convert to lowercase - applies to only the value after the "." . Dot notation only works on strings
LOWERCASE.lower() = lowercase
upper() = convert to uppercase - applies to only the value after the "." . Dot notation only works on strings
uppercase.upper() = UPPERCASE
str() = convert to string - applies to anything within the parentheses
str(3.14) = "3.14"
String Formatting
- concatenating strings through short hand
string_1 = "Camelot" string_2 = "place" print "Let's not go to %s. 'Tis a silly %s." % (string_1, string_2)
define var length
when doing concatenating, you can specify the var length to be displayed. this is especially helpful with numbers when trying to apply formatting.
print '%02d:%02d:%02d' % (now.hour, now.minute, now.second) 21:02:18
notice how the minute is 02
. If this was not defined to be (2) digits, it would have only been a 2 without the preceeding 0.
user input
by default, raw_input creates a variable defined as a string.
- variable = raw_input("display message")
name=raw_input("display message")
If you want to define another type of variable, such as an int or float, you can wrap the raw_input
function like so:
number = int(raw_input("Enter Number:"))
slice
- parse certain characters from a variable
x=variable print x[1:3] ari x=variable print [3:len(x)] iable
slicing a string can be tricky too. think about this example [:3]
, this says to slice characters 0 through 3 from the string, however it does not include 3. the key to the logic is the word upto, we are slicing from 0 upto 3. In otherwords, if you think about it as a fraction, we slice from 0 to 2.9999..., so it would NOT be inclusive of the 3rd character.
this is also why if we do [3:]
that would be from, we are slicing from 3 to the end of the string, ie. 3+, so it would be inclusive of the 3rd character.
Lists
Another data type, lists can be used to store a list of items.
ie. numbers = [5, 6, 7, 8]
Lists can also be empty.
numbers = []
Access by Index
You can access individual items, starting from 0.
ie. numbers = [5, 6, 7, 8] print numbers[3] >8
slicing
slicing lists is a bit weird compared to accessing by index. Rather than starting at 0, you actually start at 1 when calling multiple items.
ie. letters = ['a', 'b', 'c', 'd'] first_pair = letters [0:2] second_pair = letters [3:4]
if you try to start at 0, it prints out an empty list.
print letters [0:0] > []
I'm not sure why it behaves like this.
removing
There are a few different ways to remove items from lists.
.pop()
returns the item being removed and then removes it from the list.
n = [1, 3, 5] n.pop(1) # Returns 3 (the item at index 1) print n # prints [1, 5]
.remove()
removes the actual item if found
n.remove(1) # Removes 1 from the list, # NOT the item at index 1 print n # prints [3, 5]
del()
deletes the item at the given index
del(n[1]) # Doesn't return anything print n # prints [1, 5]
remove character special value
- like with regular expression, you can remove a characters normal value by adding \ in front, however this does not work with all characters in python
'Help! Help! I\'m being repressed!'
Comparators
basic comparisons
- ==, !=, <, <=, >, or >=
Tuple
You can use a tuple as a way to compare against multiple values. I've only used it when doing an equal == comparison.
if type(num) in (int, float): return abs(num)
In other words, if the type of the num parameter is equal to either int or float, then return the absolute value against 0.
Boolean Operators
- and, or, or not
true, false
True and True is True True and False is False False and True is False False and False is False True or True is True True or False is True False or True is True False or False is False Not True is False Not False is True this() and not that()
Conditional Statements
- if, else, and elif.
def clinic(): print "You've just entered the clinic!" print "Do you take the door on the left or the right?" answer = raw_input("Type left or right and hit 'Enter'.").lower() if answer == "left" or answer == "l": print "This is the Verbal Abuse Room, you heap of parrot droppings!" elif answer == "right" or answer == "r": print "Of course this is the Argument Room, I've told you that already!" else: print "You didn't pick left or right! Try again." clinic() clinic()
not in, or, and, is
some comparisons that can be used are:
not in
if var not in range(x):
or
if var == x or var == y:
and
if var == x and var == y:
is
if var is x:
datetime
builtin function within python with date time variable.
print datetime.now()
manipulate
print datetime.now().year print datetime.now().month print datetime.now().day
functions
functions are defined using def
ie. def my_function()
parameters
parameters can be passed into a function inline when it is called.
ie def my_function(var_a, var_b, var_c)
return
return returns the chosen value from the function, you can chose any value you want. Without return, the function will return None
.
ie. def test_func(num): number = num * 1 return number print test_func(1) >1 def test_func2(num): number = num * 1 print test_func2(1) >None
Python baked in functions
max()
returns the largest number from X arguments
ie. def biggest_number(*args): return max(args)
min()
opposite of max, gives the smallest number from X arguments
ie. def smallest_number(*args): return min(args)
abs()
absolute value from 0. if the number is a fraction, this will make it whole.
ie. print abs(5) >5
round()
rounded value of number.
ie. print round(10.5) >11
type()
returns the type of data in the argument. (ie, is it an int or float or string, etc)
number_ = int(1) float_ = float(4.5) string_ = str("hello") print type(number_) print type(float_) print type(string_)
append()
append a single (1) item to a list. You cannot use append() to add more than a single item at a time without outside help.
list.append(1)
extend()
extend the length of a list, you can also add multiple items natively.
suitcase.extend(["bathing suit", "towel", "sunscreen"])
index()
search for an item in a list
animals = ["ant", "bat", "cat"] print animals.index("bat")
insert()
insert an item into a specific list position, shifting any existing items.
animals = ["ant", "bat", "cat"] animals.insert(1, "dog") print animals > ["ant", "dog", "bat", "cat"]
sort()
sort a list smallest to largest, can be either numbers or letters.
function.sort()
remove()
remove item from a list.
listname.remove('value') ie. backpack.remove('dagger')
range()
generates a list
range(stop)
stops at the specified interval
range(6) # => [0, 1, 2, 3, 4, 5]
range(start,stop)
starts and stops at the specified intervals
range(1, 6) # => [1, 2, 3, 4, 5]
range(start,stop,step)
starts and stops at the specified intervals within a specific iteration.
range(1, 6, 3) # => [1, 4]
You can also count backwards
range(100,-1,-1) # starts at 100 and goes to 0, stopping at -1
Modules
import
you can import functions from modules to make reusing code easier. There are also built-in functions already in python to help save you time.
import math math.sqrt(25) > 5.0
you can also import single functions to save you a bit of typing, albeit not much.
from module import function ie. from math import sqrt
now you can call the function directly without having to put the module in front.
sqrt()
or import all the functions
from module import *
List all functions from a module
import math print dir(math)
Loops
For loops
very similar to other scripting languages. Looping through a list will begin with the 0th element and go to the last.
for future_var in list ie. numbers [1, 2, 3] for x in numbers print x
dictionary loop
dictionaries are unordered, so every time you loop through, it will go in a different order.
d = {"foo" : "bar"} for key in d: print d[key]
counted loop
sometimes you need to loop through a list and run a series of actions against each element individually
n = [3, 5, 7] for i in range(0, len(n)): n[i] = n[i] * 2
implicit loops
Another way to do this is with an implicit count. notice how num
is never defined nor is there a defined method to increase the num value.
hobbies = [] for num in range(3): hobby = raw_input("Tell me one of your favorite hobbies: ") hobbies.append(hobby) print hobbies
You can also do a similar method for printing individual characters in a string.
word = "eggs!" # Your code here! for c in word: print c
Enumerate
This function supplies a corresponding index to each element in a list.
choices = ['pizza', 'pasta', 'salad', 'nachos'] print 'Your choices are:' for index, item in enumerate(choices): print index, item
Multiple lists with zip
This allows you to iterate over multiple lists at the same time.
list_a = [3, 9, 17, 15, 19] list_b = [2, 4, 8, 10, 30, 40, 50, 60, 70, 80, 90] for a, b in zip(list_a, list_b): print a + " " + b
While Loop
Loops until the condition is met.
while True: print count count += 1 if count >= 10: break
Dictionaries
Dictionaries use key-value pairs which allow a common (or uncommon) association of values. key-value pairs can be any string or number.
You can also add lists into dictionaries.
d = {'key1' : 'value1', 'key2' : 'value2', 'key3' : 'value3'} ie. residents = {'Puffin' : 104, 'Sloth' : 105, 'Burmese Python' : 106} for animal in residents: if animal in ('Sloth','Burmese Python'): print residents[animal] > 105 > 106
my_dict = { "Crypto": "ETH", "Balance": 3.092, "Value": 4200 } for key in my_dict: print key, my_dict[key] >Balance 3.092 Crypto ETH Value 4200
keys and values
print an array of tuples with each tuple consisting of a key/value pair.
print dictionary.items()
print the dictionaries keys or values. these will NOT print in any specific order.
print dictionary.keys() print dictionary.values()
adding to dictionary
to add to an existing dictionary
dict_name[new_key] = new_value menu['Spam'] = 2.50
deleting from dictionary
single
to delete a single entry its easy.
del dict_name[key_name] ie. del num_list[num_1]
multiple
Alternatively, if you need to delete multiple entries from a dictionary, it becomes a bit trickier as you can't loop using the dictionary you are modifying. If you do, you'll encounter an error because the dictionary size changes during iteration.
A solution to this is creating a list of the items to be deleted.
ie. zoo_animals = { 'Unicorn' : 'Cotton Candy House', 'Sloth' : 'Rainforest Exhibit', 'Bengal Tiger' : 'Jungle House', 'Atlantic Puffin' : 'Arctic Exhibit', 'Rockhopper Penguin' : 'Arctic Exhibit'} dead_animals = ('Sloth', 'Bengal Tiger') for animal in dead_animals: if zoo_animals.has_key(animal): del zoo_animals[animal]
The above will loop through the list called dead_animals, then look in the zoo_animals dictionary for any matching keys, and if found, delete the key from zoo_animals.
Examples
Is Integer
determine if X is an integer
def is_int(x): absolute = abs(x) rounded = round(absolute) if absolute - rounded == 0: return True else: return False print is_int(10) print is_int(10.5)
Add digits
Take each individual number from a number and add them together (ie. 1234 = 1+2+3+4 = 10)
def digit_sum(n): total = 0 print "number: " + str(n) for i in str(n): print i total += int(i) print "total: " + str(total) return total
Determine Factorial
Calculate the factorial of a non-negative integer.
def factorial(x): total = 1 while x>0: total *= x x-=1 return total print factorial(5)
Prime number
Determine if x is a prime number.
def is_prime(x): if x < 2: return False else: for n in range(2,x-1): if x % n == 0: return False else: return True
reverse letters in word
def reverse(text): print "text: " + str(text) for letter in range(len(text)-1,-1,-1): if letter == len(text)-1: output = text[letter] else: output += str(text[letter]) print output return output
strip vowels from string
def anti_vowel(text): vowels = ["a", "e", "i", "o", "u", "A", "E", "I", "O", "U"] newString = "" for i in range(len(text)): if text[i] not in vowels: newString += text[i] return newString
scrabble score
Using a dictionary list for letters and their corresponding values, take a word, make the letters lowercase, then determine the total score of the word.
score = {"a": 1, "c": 3, "b": 3, "e": 1, "d": 2, "g": 2, "f": 4, "i": 1, "h": 4, "k": 5, "j": 8, "m": 3, "l": 1, "o": 1, "n": 1, "q": 10, "p": 3, "s": 1, "r": 1, "u": 1, "t": 1, "w": 4, "v": 4, "y": 4, "x": 8, "z": 10} def scrabble_score(word): result = 0 for letter in word: letter = letter.lower() if letter in score: print "letter found: " + str(letter) + " with score: " + str(score[letter]) result += int(score[letter]) print result return result
censor word
censor word in a string with a series of asterisks that match the word letter count.
def censor(text, word): censor = "" if word in text: for i in range(len(word)): censor += "*" result = text.replace(word,censor) print result return result
median
determine the median of a list. if even, take the (2) numbers around the median position and average them together. make sure the list is sorted before getting the median.
def median(lst): lst = sorted(lst) if len(lst) % 2 == 0: b = lst[len(lst) / 2] c = lst[len(lst) / 2 - 1] return float(b + c) / 2 else: if len(lst) == 1: return lst[0] else: return lst[len(lst) / 2]