From a1d9f967bca18c6c2560e7812643a38d5be72a58 Mon Sep 17 00:00:00 2001 From: Andrew Kim <30988839+ew4321@users.noreply.github.com> Date: Thu, 5 Oct 2017 16:14:51 -0400 Subject: [PATCH 1/7] Add files via upload --- samplelistcomprehension.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 samplelistcomprehension.py diff --git a/samplelistcomprehension.py b/samplelistcomprehension.py new file mode 100644 index 0000000..0ac7991 --- /dev/null +++ b/samplelistcomprehension.py @@ -0,0 +1,24 @@ +# Hi! Welcome to this mini tutorial on using list comprehensions in Python! +# Check out samplelists.py if you need help with lists. + +# Starting off with list comprehensions! +# Syntax used to make an ordinary list: +my_list = ["apple", "banana", "pear", "peach"] + +# To concisely make a new list of elements, use a list comprehension: +list_comp = [num for num in range(10)] # Notice how square brackets are +# used to create a list. +print list_comp + +# List comprehension syntax can be understood as so: +# [num for num in range(5)] +# Make a new num for each num in given range + +# The first expression (before the "for" keyword) can be altered to satisfy a +# given condition over an iterable. +doubled_list_comp = [num * 2 for num in list_comp] +print doubled_list_comp + +# Furthermore, "if" statements can be used in list comprehensions as well. +even_num_list_comp = [num for num in list_comp if num % 2 == 0] +print even_num_list_comp From 7f3962b6ef0185ea4bddff58f66e5872fa5a0aa7 Mon Sep 17 00:00:00 2001 From: Devon Jue Date: Fri, 6 Oct 2017 00:50:10 -0700 Subject: [PATCH 2/7] added comments to the rest of the files --- sampleimport.py | 16 ++++++++++++++++ sampleinput.py | 6 ++++++ sampleloops.py | 13 +++++++++++++ sampleprint.py | 12 ++++++++++++ samplewhile.py | 21 ++++++++++++++++++++- 5 files changed, 67 insertions(+), 1 deletion(-) diff --git a/sampleimport.py b/sampleimport.py index e3572e1..3d209c2 100644 --- a/sampleimport.py +++ b/sampleimport.py @@ -1,14 +1,30 @@ +# import command line argument reader 'argv' from the 'sys' python module from sys import argv + +# takes the two arguments after the 'python' command, +# and assigns to the variables 'script' and 'user_name' script, user_name = argv + +# assigns the string with an arrow and space to the variable 'prompt' prompt = '> ' + +# user_name, the second argument, and 'sampleimport.py' replace %s in the order listed print "Hi %s, I'm the %s script." % (user_name, script) print "I'd like to ask you a few questions." + +# replaces %s with the variable user_name and prints print "Do you like me %s?" % user_name + +# prints '> ' and allows user to input a value, assigns user input to the 'likes' variable likes = raw_input(prompt) + +# repeats the process above two more times print "Where do you live %s?" % user_name lives = raw_input(prompt) print "What kind of computer do you have?" computer = raw_input(prompt) + +# takes the last three user inputs in order and inserts into the last print statement, replacing %r print """ Alright, so you said %r about liking me. You live in %r. Not sure where that is. diff --git a/sampleinput.py b/sampleinput.py index cd6a3e9..1d7d815 100644 --- a/sampleinput.py +++ b/sampleinput.py @@ -1,5 +1,11 @@ +# import command line argument reader 'argv' from the 'sys' python module from sys import argv + +# takes the four arguments after the 'python' command, +# and assigns to the variables 's', 'f', 'ss', and 't' s,f,ss,t=argv + +# prints the four arguments on separate lines with text print "the script is" , s print "var1 1 is" , f print "var 2 is" , ss diff --git a/sampleloops.py b/sampleloops.py index e55070d..aee9a27 100644 --- a/sampleloops.py +++ b/sampleloops.py @@ -1,13 +1,26 @@ +# assigns numbers 1 through 3 to an array arr=[1,2,3] + +# assigns three names to an array arrstr=["ashu" , "himu" , "piyu"] + +# loops through each number from the number array, and prints the number for num in arr: print "numbers are %d" %num + +# loops through each name from the name array, and prints the name for name in arrstr: print "names are %s" %name + +# initializes an empty array arrinput=[] + +# asks the user for a input four times and pushes inputs into an array for i in range(0,4): print "enter element number %d" %i number = raw_input("> ") arrinput.append(number) + +# loops through the input array and prints each input for inp in arrinput: print "elements are %r" %inp diff --git a/sampleprint.py b/sampleprint.py index d0e01ad..00ec5a0 100644 --- a/sampleprint.py +++ b/sampleprint.py @@ -1,19 +1,31 @@ +# prints an empty space since comments are ignored print #"Hello World!" + +# prints the following strings and separate lines print "Hello Again" print "I like typing this." print "This is fun." print 'Yay! Printing.' print "I'd much rather you 'not'." print 'I "said" do not touch this.' + +# prints the boolean value of this mathematical comparison print 3 + 2 < 5 - 7 + +# assigning numerical values to variables cars = 100 space_in_a_car = 4.0 drivers = 30 passengers = 90 + +# performing mathematical operations on the variables above, +# and assigning the answers to new variables cars_not_driven = cars - drivers cars_driven = drivers carpool_capacity = cars_driven * space_in_a_car average_passengers_per_car = passengers / cars_driven + +# the new variables are printed on separate lines print "We need to put about", average_passengers_per_car, "in each car." print "We have", passengers, "to carpool today." print "There will be", cars_not_driven, "empty cars today." diff --git a/samplewhile.py b/samplewhile.py index 22ded5c..4aafc35 100644 --- a/samplewhile.py +++ b/samplewhile.py @@ -6,14 +6,33 @@ # SAMPLE CODE +# initialize the while iterator to 0 i = 0 + +# initialze empty numbers array numbers = [] + +# keep running this while loop as long as 'i' is less than 6 while i < 6: + + # prints the value of i at the beginning of the loop print "At the top i is %d" % i + + # adds the number i to the number array numbers.append(i) + + # increase the number i by 1 i = i + 1 + + # prints the current numbers array print "Numbers now: ", numbers + + # prints the value of i at the end of the loop print "At the bottom i is %d" % i - print "The numbers: " + +# prints the numbers of the numbers array, +# every value of i during the loop before it exited (0 through 5) +# since the while loop exited when i reached 6 +print "The numbers: " for num in numbers: print num From fa04343237f4ec58e2baf3a7a1d03677f066a6ab Mon Sep 17 00:00:00 2001 From: 090max <32358539+090max@users.noreply.github.com> Date: Fri, 6 Oct 2017 23:39:01 +0530 Subject: [PATCH 3/7] Understanding nested loops Understanding nested loops through a pattern formation in python --- Nested-loops | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 Nested-loops diff --git a/Nested-loops b/Nested-loops new file mode 100644 index 0000000..42e28a3 --- /dev/null +++ b/Nested-loops @@ -0,0 +1,25 @@ +#Program to understand working of loops and nested loops in python by a simple pattern formation. +#suppose if user enters 4 then the following should be printed +#output - +# * + +# * * + +# * * * + +# * * * * +# ignore all the '#' above in the output + +a=int(input("enter ")) #we take an input from the users of how many lines the pattern should run. +for i in range(a): #executing a loop, here i's value will start from 0 till a-1. + t=((a-1)-i) #carefuly observing the pattern we get to understand that we need loop for spaces and one for * so first we define t that will contain values from a-1 to 0 + for b in range(t): #creating a Nested loop for spaces + print(" ",end=' ') + k=i+1 #by observing the pattern above we can see that we need a variable that can print the number of * , and by logic the line number = number of * in that line + for c in range(k): # making a loop to print * + print("*"," ",end=' ') + print("\n") + +# Hence loops work in a defined order to produce a specific result. +# hence in all , all the logical patterns are solved by nested loop concept and to be a master in that getting the right logic and sufficient number of nested loops is important. +# If possible try running this python code and try putting different input and see the output From 9193d571d0c24af1a9a6b23fa260bfd583873c30 Mon Sep 17 00:00:00 2001 From: rollerbrick Date: Fri, 6 Oct 2017 14:16:53 -0700 Subject: [PATCH 4/7] Added sample exceptions. --- sampleexceptions.py | 90 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 sampleexceptions.py diff --git a/sampleexceptions.py b/sampleexceptions.py new file mode 100644 index 0000000..d04fe2d --- /dev/null +++ b/sampleexceptions.py @@ -0,0 +1,90 @@ +# python sampleexceptions.py + +# Minimal types of exceptions are used in this sample. +# For a list of built in python exceptions see https://docs.python.org/2/library/exceptions.html + + +# Expected Output: +# +# Basic exception raised. +# Basic exception with message: ERROR. +# Caught non basic exception: No module named badimport. +# Caught non basic exception: unsupported operand type(s) for +: 'int' and 'str'. +# Demonstrated how to handle multiple types of exceptions the same way. +# Demonstrated how to handle multiple types of exceptions the same way with a message: No module named badimport. +# Demonstrated how to handle exceptions differently. +# This should appear. +# Demonstrated how finally is run after exceptions. +# Demonstrated how else is run when no exceptions occur. +# Demonstrated how to use a basic custom exception: Custom Exception. + + +try: + raise Exception +except: + print "Basic exception raised." + + +try: + raise Exception("ERROR") +except Exception as e: + print "Basic exception with message: %s." % str(e) + + +try: + import badimport +except ImportError as e: + print "Caught non basic exception: %s." % str(e) + + +try: + test = 1 + '1' +except TypeError as e: + print "Caught non basic exception: %s." % str(e) + + +try: + import badimport +except ImportError, TypeError: + print "Demonstrated how to handle multiple types of exceptions the same way." + + +try: + import badimport +except (ImportError, TypeError) as e: + print "Demonstrated how to handle multiple types of exceptions the same way with a message: %s." % str(e) + + +try: + import badimport +except ImportError: + print "Demonstrated how to handle exceptions differently." +except TypeError: + print "This should not appear." + + +try: + import badimport +except ImportError: + print "This should appear." +finally: + print "Demonstrated how finally is run after exceptions." + + +try: + test = 1 + 1 +except: + print "This should not appear." +else: + print "Demonstrated how else is run when no exceptions occur." + + +class CustomBasicError(Exception): + """ Custom Exception Type - Can be customised further """ + pass + + +try: + raise CustomBasicError("Custom Exception") +except CustomBasicError as e: + print "Demonstrated how to use a basic custom exception: %s." % str(e) From 9c298e6872d7be5a6a047d8cb50d8e0ad75cb474 Mon Sep 17 00:00:00 2001 From: Khesualdo Condori Date: Fri, 6 Oct 2017 19:36:29 -0600 Subject: [PATCH 5/7] Added different methods of input --- sampleMethodsInput.py | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 sampleMethodsInput.py diff --git a/sampleMethodsInput.py b/sampleMethodsInput.py new file mode 100644 index 0000000..b0330f6 --- /dev/null +++ b/sampleMethodsInput.py @@ -0,0 +1,37 @@ +# Example input: +# 5 +# 1 2 3 4 5 +# Example Output: n = 5, data = [1, 2, 3, 4, 5] +n, data = input(), [int(i) for i in input().strip().split()] + +# How to take input from multiple lines +# Will take input until sees a blank line (sentinel) +# Example input: +# 1 2 3 +# 4 5 +# Example Output: user_input = '1 2 3 4 5' +sentinel = '' +user_input = '\n'.join(iter(input, sentinel)).replace('\n', ' ') + +# Example input: +# 1 2 3 4 +# Example Output: var1 = 1, var2 = 2, var3 = 3, var4 = 4, such that var1, var2, var3, var4 are of type string +var1, var2, var3, var4 = input().split() + +# Example input: +# 1 2 3 4 +# Example Output: var1 = 1, var2 = 2, var3 = 3, var4 = 4, such that var1, var2, var3, var4 are of type int +var1, var2, var3, var4 = map(int, input().split()) + +# Example input: +# 1 2 3 +# 1 2 3 +# ... +# 1 2 3 +while True: + try: + + var1, var2, var3 = map(int, input().split()) + + except EOFError: + break \ No newline at end of file From de8decb4f2eab5b7bd57a6bc3998d1f5a442a8f0 Mon Sep 17 00:00:00 2001 From: delanou Date: Fri, 6 Oct 2017 23:19:13 -0500 Subject: [PATCH 6/7] added permutation example --- samplepermutation.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 samplepermutation.py diff --git a/samplepermutation.py b/samplepermutation.py new file mode 100644 index 0000000..dda502a --- /dev/null +++ b/samplepermutation.py @@ -0,0 +1,29 @@ +# PowerSet.py +# Description: given an array of numbers, generates +# a power set + +def findPowerSet(originalSet, index, currentSet, powerSet): + if (index >= len(originalSet)): + # add list to power set(convert list to tuple) + powerSet.append(currentSet) + return + + # set where element was not added + notAddedSet = currentSet[:] + + # append both sets + currentSet.append(originalSet[index]) + + # recursive call to other elements in originalSet + findPowerSet(originalSet, index + 1, currentSet, powerSet) + findPowerSet(originalSet, index + 1, notAddedSet, powerSet) + + +if __name__ == "__main__": + print("in main file") + testSet = [1, 2, 3] + powerSet = [] + + findPowerSet(testSet, 0, [], powerSet) + + print("Final Set = " + str(powerSet)) From 06e3e6f460bbd37548bbcf43e555adf3e01095f1 Mon Sep 17 00:00:00 2001 From: Anthony Fox Date: Sat, 7 Oct 2017 17:56:29 -0700 Subject: [PATCH 7/7] Add samplegenerators.py --- samplegenerators.py | 47 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 samplegenerators.py diff --git a/samplegenerators.py b/samplegenerators.py new file mode 100644 index 0000000..b47f665 --- /dev/null +++ b/samplegenerators.py @@ -0,0 +1,47 @@ +# Generators hold values that are fetched lazily. +# Meaning that the entire collection isn't stored +# in memory all at once, but rather retrieved when +# needed. + +# This is best used when dealing with a large +# collection of items. Such as rows returned from +# a database call or looping over a large csv. + +# Generators are intelligent enough to handle these +# large collections without running out of memory. +# They dispose of variables in memory that are no +# longer used and do not worry about variables +# that are not yet needed. + +# Here's the syntax for a generator. It's just a +# function! Take note of the yield keyword. yield +# basically means 'return', but lets Python know +# we'll be coming back for more. +def color_generator(): + yield 'blue' + yield 'orange' + yield 'yellow' + yield 'purple' + +# One way to use generators is by calling `next()` +# on it's instance +g = color_generator() # create the instance +next(g) # 'blue' +next(g) # 'orange' +next(g) # 'yellow' +next(g) # 'purple' + +# However, once a generator is exhausted, it will +# not start back at the beginning. +next(g) # Raises StopIteration error. + +# They're also iterables. No StopIteration errors +# are thrown with this method. +for color in color_generator(): + print(color) + +# 'blue' +# 'orange' +# 'yellow' +# 'purple' +