acm init() day 3
TRANSCRIPT
ACM init()Day 3: April 29, 2015
From last time
• Input- Madlibs!
• Comparison operators
• Boolean operators
• Conditionals
The calculator
Can we improve this• This calculator is pretty inconvenient
• User must be prompted often
• Unfriendly interface
• Only one calculation can be performed
• Can this be improved?
Of course we can!We can use 'loops' to make a much better calculator
Why is this better?
• We can do more than one calculation
• The user can type in a legitimate mathematical equation
• There is less confusion and clutter in the interface
Loops
• Loops are a great tool if you want to repeat an action
• We are going to go over two types of loops: 'while' and 'for'
While loopA while loop checks to see if a certain condition is true, and while it is, the loop keeps running. As soon as the condition
stops being true, the loop stops.
while statement is true: do something
While example
While loop! The indents are important. They tell Python what is still part of the loop.
While example
x = 1
Output:
While example
x = 1
Output:
While example
x = 1
Output: 1
While example
x = 2
Output: 1
While example
x = 2
Output: 1
While example
x = 2
Output: 1 2
While example
x = 3
Output: 1 2
While example
x = 3
Output: 1 2
While example
x = 3
Output: 1 2 3
While example
x = 4
Output: 1 2 3
While example
x = 4
Output: 1 2 3
While example
x = 4
Output: 1 2 3
END
Another while example
This will print out the entire song!
Quick aside
str(x) will convert a number to a string. This allows you to concatinate numbers and strings together when printing.
DangerWe always have a condition that will make the loop end.
What if we forget to update the condition? !
We might create something called an infinite loop. This loop will keep running forever, which is really bad.
Infinite Loop OutputAHHHHHHHHHHHHHHHHHHHHH AHHHHHHHHHHHHHHHHHHHHH AHHHHHHHHHHHHHHHHHHHHH AHHHHHHHHHHHHHHHHHHHHH AHHHHHHHHHHHHHHHHHHHHH AHHHHHHHHHHHHHHHHHHHHH AHHHHHHHHHHHHHHHHHHHHH AHHHHHHHHHHHHHHHHHHHHH AHHHHHHHHHHHHHHHHHHHHH AHHHHHHHHHHHHHHHHHHHHH AHHHHHHHHHHHHHHHHHHHHH AHHHHHHHHHHHHHHHHHHHHH
...
Infinte loops
Infinite loops are bad because they keep going forever, might crash your computer, and are generally annoyin. Be careful!
BreakPut 'break' anywhere in a while loop to instantly leave the loop.
While-else
This is similar to if-else, with an exception! The else in a while loop will execute when the loop condition becomes false. It will
not execute if break is used.
Here's an example: we're going to generate 3 random numbers. If one of them is a 5, you lose! Otherwise, you win.
ChallengeWe're going to make a game similar to the example on the last
slide. However, allow the user to guess what the number is three times.
Remember, raw_input turns user input into a string, so we use int() to make it a number again.
Use a while loop to let the user keep guessing so long as guesses_left is greater than zero.
!Ask the user for their guess.
!If they guess correctly, print "You win!" and break.
!Decrement guesses_left by one.
!Use an else: case after your while loop to print "You lose."
Here's a start!
A brief sidenoteou might have seen that in loops I was using += and -=
These are just shorthand.
For loopA 'for' loop is used when we know how many times we'll be
looping when we start. The loop will run however many times we tell it to.
for variable in range(number): do something
For example
The range is from 0 to 3, not including 3!
For example
i = 0
Output:
For example
i = 0
Output: 0
For example
i = 1
Output: 0
For example
i = 1
Output: 0 1
For example
i = 2
Output: 0 1
For example
i = 2
Output: 0 1 2
For example
i = 3
Output: 0 1 2
For example
i = 3
Output: 0 1 2END
What will this print?
Answer1 2 3 4 5 6 7 8 9
We can loop through strings too!
This will print out every letter in the string.
Problem
Write a for loop to print out every letter in any word a user types in.
Answer
What will this print out?
Answer
1 3 5 7 9
The continue keyword moves on the the next iteration of the loop.
Challenge problem: Fizzbuzz
Write a program that prints the numbers from 1 to 100. For multiples of three print “Fizz” instead of the number and for
the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”.
The next slide shows what the output should look like for the first 26 numbers.
Fizzbuzz!
What we did today• Loops!
• While loop- don't make them infinite!
• While-else
• For loops
• For-else loops exist as well
Calculator revisitedUsing the loops from today try to improve your calculator. Hint:
you'll probably have to use both types of loops! !
Another hint: if you want to access a certain character of a string you can do it like this:
string[i] = ... i is the index of the string, starting at 0.