Difference between revisions of "EGR 103/Spring 2019/Test 1"
Jump to navigation
Jump to search
Line 186: | Line 186: | ||
* isinstance(), raise | * isinstance(), raise | ||
* binary | * binary | ||
+ | |||
+ | == Not on test because I forgot to include it in the above but will for Fall 2019 == | ||
+ | * len() | ||
+ | * Dictionaries |
Latest revision as of 01:25, 4 March 2019
Draft v. 0.1 - 2/24/2019
Contents
ints and floats
- Operators (** * / % // + -) -- work as expected as long as you expect x**y to be x to the yth power!
- += and -= to add or subtract a value from a variable
- Relational operators (< <= == >= > !=)
- round(blah, [ndigits=0]) -- rounds to the 10**(-ndigits) place; round(123.456, -1) is 120.0 for instance.
- int(blah) returns the integer value of blah if blah is a string with a valid integer in it
- float(blah) returns the float value of blah if blah is a string with a valid float in it
arrays
- rectangular sequences of numbers (ints or floats)
- create using np.array(COLLECTION) where COLLECTION could be a list, list of lists, tuple, tuple of tuples, etc - must be rectangular
- + between arrays will add corresponding elements; + between an array and a number will add that number to each element
- -, *, /, **, //, and % work in similar fashion
- np.TRIG() (where TRIG is cos, sin, etc) works on an array -- note that m.TRIG() will not
- no easy way to append an array
- x = np.array([*x, NEW]) works - haven't used in class or lab
- slicing
- Must use np.max() np.min() and np.mean() to get max, min, and average
- collection.copy() to create duplicate list somewhere else in memory
lists
- Sequence made up of any types of items, including other lists
- + will concatenate lists ([1, 2] + [3] yields [1, 2, 3])
- Have to be lists -- [1, 2] + 3 yields an error!
- += will append an item to a list - that item must be a list!
- * will repeat lists -- [1, 2] * 3 yields [1, 2, 1, 2, 1, 2]
- Useful commands (assume the variable collection is a list):
- list(map()) or list(string) or list(range()) can convert those types into lists of things - useful for viewing and manipulating
- stuff.join(collection) -- takes the elements in the list and joins them into a single string, using the characters in the variable stuff to join them. Commonly, stuff will simply be so the items in the list are all put directly next to each other.
- sum(collection), max(collection), min(collection) -- returns the appropriate value if all items are the same type (i.e. all numbers or all strings or all lists) -- sum only works on numbers
- collection.count(thing) -- returns the number of times the thing appears in the list
- slicing
- collection.copy() to create duplicate list somewhere else in memory
- map(command, collection) will return a map with the command applied to each entry in the collection; use list(map(command, collection)) to actually see what happened
- (simple) Comprehensions [EXPRESSION for VARIABLE in ITERABLE if LOGIC]
tuples
- Immutable - cannot change values
- Sequence made up of any types of items, including other tuples
- Single-element tuples created by putting , after item: x = (3,)
- + will concatenate tuples ((1, 2) + (3,) yields (1, 2, 3))
- Have to be tuples -- (1, 2) + 3 or (1, 2) + (3) both yield an errors!
- += will append an item to a tuple and replace the old tuple with the new one - that item must be a tuple!
- * will repeat tuples -- (1, 2) * 3 yields (1, 2, 1, 2, 1, 2)
- Useful commands (assume the variable collection is a tuple):
- sum(collection), max(collection), min(collection) -- returns the appropriate value if all items are the same type (i.e. all numbers or all strings or all lists) -- sum only works on numbers
- collection.count(thing) -- returns the number of times the thing appears in the list
- slicing
- collection.copy() to create duplicate list somewhere else in memory
- map(command, collection) will return a map with the command applied to each entry in the collection; use list(map(command, collection)) to actually see what happened
strings
- Immutable - cannot change characters
- + will concatenate strings ('Go' + ' ' + 'Duke' yields 'Go Duke')
- * will repeat strings ('Go' * 4 yields 'GoGoGoGo')
- str(blah) creates a string from the entries in blah (generally an int or float)
- ord(letter) can work on a single-character to return the ASCII value of that single letter; chr(number) will give the string related to the ASCII value of number. Since this only works on one character, need to map it to get all of them.
- Useful commands (assume the variable phrase is some string):
- phrase = input("prompt: ") -- input always gets a string, use int() or float() to convert to something else if needed
- phrase.lower(), phrase.upper(), phrase.capitalize() -- returns a string with words having appropriate cases
- phrase.count(string) -- returns the number of times the string occurs in the phrase or 0 if it does not appear
- phrase.find(string) -- returns the index where the string first appears in the phrase or -1 if it does not appear
- phrase.split(string) -- looks for the string in the phrase and breaks the phrase up into a list of strings
- phrase.strip(string) -- looks for characters in the string at the start or end of a phrase and removes all of them
In [1]: phrase = 'aaababbleaaaaa' In [2]: phrase.strip('a') Out[2]: 'babble' In [3]: phrase.strip('ab') Out[3]: 'le'
slicing
- work on arrays, strings, lists, and tuples
- thing[a:b:c] will slice the elements in thing starting with the ath item and going to just before the bth item, skipping c items at a time.
- For a thing with N elements,
- Default for a is 0 if c is positive or N if c is negative
- Default for b is N if c is positive or "up to and including the 0th entry" if c is negative
- If going backwards, you must include a negative c; thing[4:2] will return an empty version the same type as thing
- For lists of lists (or tuples of tuples) or arrays, can cascade indices like q[2][4]
- FOR ARRAYS ONLY can use x[row(s), col(s)]
logic
- Logical operators (not, and, or)
- "in" operator
- check if integer is in a list or tuple
- check if a letter or string is in a list of strings or in a string -- note different between
"Ha" in "Happy"
(which is True) and"Ha" in ["Happy"]
, which is false - Note: if you are checking if a list is in another list, the whole list has to be there! So,
1 in [1, 2, 3]
is true,[1] in [1, 2, 3]
is false, and[1] in [[1], 2, 3]
is true.
math
- requires import math or import math as m
- Constants: m.pi and m.e
- Trig -- only works on a single value (m.sin(), m.cos(), m.asin(), etc); degrees are in radians
- Rounding -- m.ceil(), m.floor()
- Others:
- m.log(x, [b==m.e]) returns base b logarithm of x
- m.exp(x) returns m.e**x
numpy
- requires import numpy or import numpy as np
- np.linspace()
- np.where()
- np.random.randint(), np.random.uniform(), np.random.normal(), np.random.seed()
- np.polyfit(x, y, ord) and np.polyval(coefs, new_x)
- np.loadtxt('filename')
- np.min(), np.mean(), np.max()
logical masks
- (Logic) * (Formula)
- Unit step function:
def u_step(x): (x>=0) * (1)
printing
- Be able to use print using replacement fields and the format command
- Given a replacement field of the form "{" [field_name] ["!" conversion] [":" format_spec] "}", be able to use:
- field name: if blank, take next field on stack; if a number, take that entry in the stack
- conversion - N/A
- format spec - given the general format spec of [[fill]align][sign][#][0][width][,][.precision][type], be able to use:
- sign: if this is +, put - and + in front of numbers; otherwise, ignore +
- 0: print 0s to left of number if it is not taking up all the space
- width: reserve at least this much space to print the number; if the number needs more space, it will take it. If it needs left, default alignment is to the right for a number and to the left for a string
- precision: number of digits after the decimal point
- type: s for strings, f for regular floating point, e for scientific notation, d for decimal integer
- default is for print to append '\n' to go to next line; use print(thing, end="") to stop that from happening
plotting
- requires import matplotlib.pyplot as plt
- Start with
- fig,ax = plt.subplots(num=1)
- fig.clf()
- fig,ax = plt.subplots(num=1)
- fig.clf()
- ax.plot(y)
- ax.plot(x, y)
- ax.plot(x, y, format)
- ax.plot(x, y, 'bo-', markersize=3, markerfacecolor='r', markeredgecolor = 'b', label='hello!')
- ax.legend()
- ax.set_xlabel(), ax.set_ylabel(), ax.set_title(), ax.grid()
- fig.savefig(NAME)
- Need to know for the format:
- colors: b g r c m y k w
- line styles: - -- -. :
- marker styles: . o s + D
- Can only put one color in format
- If using kwargs, each item to be plotted needs its own ax.plot() command
functions
- definition and default cases
- required inputs / positional arguments
- returns (returns a tuple - can either grab all or each individually)
program flow
- if trees
- May include multiple elif branches
- May include else branch at the end
- while loops
- for loops
- for k in LIST: iterates over each item in the list
- for k in TUPLE: iterates over each item in the tuple
- for k in STRING: iterates over each character in the string
- for k in range(stop): iterates over integers from 0 to stop-1
- for k in range(start, stop): iterates over integers from start to stop-1
- for k in range(start, stop, step): iterates over integers from start by step to the value before hitting or going over stop
- for idx,val in enumerate(ITERABLE): provides an index in idx and the value in that index in val
- nested versions of all of the above
- break and continue in loops
linear algebra
- Given a set of linear algebra equations, be able to rearrange and write them in matrix form.
- Be able to calculate by hand the determinant of matrices up to 3x3 and the inverses of matrices up to 2x2.
- Be able to set up and solve a systems of 2 equations with 2 unknowns by hand and without a calculator.
Not on test
- LaTeX
- UNIX
- PyDAQmx
- Chapra 4.2 specifically
- isinstance(), raise
- binary
Not on test because I forgot to include it in the above but will for Fall 2019
- len()
- Dictionaries