Introduction to Python Programming

Page 1

Introduction To Python Programming Introduction To Python Programming

For any help regarding Python Homework Help visit : - https://www.pythonhomeworkhelp.com/, Email :- support@pythonhomeworkhelp.com or call us at :- +1 678 648 4277

For any help regarding Python Homework Help visit : - https://www.pythonhomeworkhelp.com/, Email :- support@pythonhomeworkhelp.com or call us at :- +1 678 648 4277

Questions:

1. Are each of the following True or False:

(a) Any program that can be written using only function definitions and calls, the basic arithmetic operators, assignment, and conditionals will run in constant time.

(b) Newton’s method will always converge on a correct root of a function.

(c) In Python, dictionaries are immutable.

(d) The value of ‘math.sqrt(2.0)*math.sqrt(2.0) == 2.0’ is True.

(e) One should always avoid iteration when a recursive solution is possible.

(f) Typically, the use of functions in a program reduces the total number of lines of code.

(g) In Python, retrieving the value associated with a dictionary key takes roughly constant time.

2. Consider the implementations of compare1 and compare 2, where a and b are floats.

2.1)

Do compare1 and compare2 return the same value for all possible inputs? If not, give a pair of inputs for which they return a different value.
if
a
if
b = -b res
2.2) Do compare1 and compare2 print the same thing for all possible inputs? If not, give a pair of inputs for which they print different things. def compare1(a, b):
a < 0:
= -a
b < 0:
= (a == b) if res: print a, 'and', b, 'have the same absolute value.' else: print a, 'and', b, 'have different absolute values.' return res
def absolute_value(n): if n < 0: n = -n return n def compare2(a, b): res = absolute_value(a) == absolute_value(b) if res: print a, 'and', b, 'have the same absolute value.' else: print a, 'and', b, 'have different absolute values.' return res 3) Consider the following implementation of a function f, where x is a positive integer: def f(x): xs = str(x) if len(xs) == 1: return int(xs) n = int(xs[0]) + int(xs[1])
if len(xs) == 2: return n else: return n + f(xs[2:]) (3.1) What does f(2112) return? 3.2) Write a specification of f. 4) Provide a Python implementation of a function first_N that takes a positive integer, n, as its only argument. The function should print the first n perfect squares that are not even numbers. E.g., if n were 2 it should print the perfect squares 1 and 9. 5) Write pseudo code for an exhaustive enumeration variant of guess and check. 6) Provide a Python implementation for the function findSide specified below def findSide(): """asks the user to enter the area of a rectangle and the length of one side of the rectangle. Returns a floating point number that is the length of the adjacent side."""
7) Does the following function meet its specification? If not, change the program so that it is consistent with the specification. def f(L): """Returns a copy of the list L without modifying L.""" result = [] for e in L: result.append (e) return result 8) At McDonalds one can buy chicken nuggets in packages containing 6, 9 or 20 pieces. Write a Python function that accepts an integer, num, as an argument and decides whether or not it is possible to buy num nuggets at McDonalds. 9) Write an appropriate specification for the function below. Assume that n is an integer. def f(n): s = str(n) if len(s) <= 1: return s return s[-1] + f(int(s[:-1]))

Solution:

a) False. Recursion means your program can run indefinitely.

b) False. You may end up jumping back and forth between the same two forever, given an S-shaped function.

c) False. mydict[somekey] = somevalue.

d) False. Precision is finite.

e) False. Recursion may be a more natural way to express certain problems (e.g.: fib, Towers of Hanoi).

f) True. Code reuse.

g) True. A quick lookup.

2)

2.1) Yes, they return the same value for all possible inputs.

2.2) No, they print dierent things for negative inputs. This is because a and b are ff updated to refer to a dierent number in compare1, whereas they are not ff updated in compare2.

3) Note about this function: it is a bit strange in that it handles multiple argument types.

3.1) f(2112) returns 2+1+f(’12’) ==> 2+1+1+2 ==> 6. 3.2) Given an integer or a string representation of an integer, f returns the sum of its digits. 4) def first_N(n): count = 0 current_sqrt = 1 while count < n: square = current_sqrt * current_sqrt # If square is not even if square % 2 != 0: print square count += 1 current_sqrt += 1 5) def guess_and_check(criteria): for a in range(...):
for b in range(...): for c in range(...): ... if satisfies_criteria(a, b, c, ..., criteria): return a, b, c,... 6.) def findSide(): area = float( raw_input(’Enter the area of the rectangle: ’) ) side1 = float( raw_input(’Enter the length of one side of the rectangle: ’) ) return area / side1 7.) Yes, it meets its specification, because the list being modified is a brand-new list (result) that is created inside the function, then returned. L is only traversed. 8) Note the resemblance to the exhaustive enumeration for guess-and-check, in Problem 5.
We’re assuming that by “decides,” we just need to return True/False. def
return True return False
nuggets(num): for a in range(num/6+1): for b in range(num/9+1): for c in range(num/20+1): if 6*a + 9*b + 20*c == num:
9) Given an integer, take the string representation of that integer and reverse its digits (returning this as a string).

Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.