CMU 15-110: Principles of Computing
Loops


  1. for loops
  2. Nested for loops
  3. while loops
  4. Infinite loops

  1. for loops
    • using range(n)
      # print the integers from 0 to 9 (not 10) for x in range(10): print(x)

      Example: sumToN
      def sumToN(n): result = 0 for x in range(n+1): result += x return result print('n sumToN(n)') for n in range(10): print(n, ' ', sumToN(n))

    • using range(lo, hi)
      # print the integers from 20 to 29 for x in range(20, 30): print(x)

      Example: factorial
      def factorial(n): result = 1 for x in range(2, n+1): result *= x return result print('n factorial(n)') for n in range(10): print(n, ' ', factorial(n))

    • using range(lo, hi, step)
      # print the integers from 20 to 49 by 5's for x in range(20, 50, 5): print(x)

      Example: sumOfOddsToN
      def sumOfOddsToN(n): result = 0 for x in range(1, n+1, 2): result += x return result print('n sumOfOddsToN(n)') for n in range(10): print(n, ' ', sumOfOddsToN(n))

  2. Nested for loops
    • starRectangle
      def starRectangle(n): result = '' for row in range(n): for col in range(n): result += '*' result += '\n' # add a newline to the string! return result print(starRectangle(5))

    • starTriangle
      def starTriangle(n): result = '' for row in range(n): for col in range(row+1): result += '*' result += '\n' # add a newline to the string! return result print(starTriangle(5))

    • differentStarTriangle
      def differentStarTriangle(n): result = '' for row in range(n): for col in range(n-row): result += '*' result += '\n' # add a newline to the string! return result print(differentStarTriangle(5))

    • mysteryStarShape
      def mysteryStarShape(n): result = '' for row in range(1, n+1): for col in range(row): result += '*' for col in range(2*n - 2*row): result += ' ' for col in range(row): result += '*' result += '\n' # add a newline to the string! return result print(mysteryStarShape(5)) # What will this print? (be careful!)

  3. while loops
    • leftmostDigit
      def leftmostDigit(n): n = abs(n) while (n >= 10): n = n//10 return n print(leftmostDigit(72658489290098)) # 7

    • digitSum
      def digitSum(n): result = 0 n = abs(n) while (n > 0): onesDigit = n%10 n = n//10 result += onesDigit return result print(digitSum(201401)) # 2+0+1+4+0+1 == 8

  4. Infinite loops
    def addSomeNumbers(): total = 0 while True: rawInput = input('Enter a number (or just hit enter to quit) --> ') if (rawInput == ''): return total total += int(rawInput) total = addSomeNumbers() print('Total:', total)