Upload
derick-crull
View
220
Download
0
Embed Size (px)
Citation preview
COMPSCI 101Principles of Programming
Lecture 6 – Getting user input, converting between types, generating random numbers
CompSci 1012
Exercise What is the output after executing the following
code?greeting = "Hello World"greeting = greeting.strip()position1 = greeting.find("o")position2 = greeting.rfind("o")position3 = greeting.find("Z")position4 = greeting.rfind("o W")greeting_lower = greeting.lower()greeting_upper = greeting.upper()
print(greeting)print(position1, position2, position3, position4)print(greeting_lower)print(greeting_upper)
CompSci 1013
Exercise What is the output after executing the following
code?smallest = min(32.7, 56.4, 3, -1.1, 56.99, -1.2)largest = max(32.7, 56.4, 3, -1.1, 56.99, -1.2)print(smallest, largest)
num1 = 32.657123print(round(num1))print(round(num1, 2))
CompSci 1014
Learning outcomes At the end of this lecture, students should be able
to: get user input from the keyboard generate a random number convert between types
CompSci 1015
Getting input from the user The input() function is used to get information
from the user. This function displays the prompt, waits for the user
to type their information and, as soon as the user presses the 'Enter' key, the input() function returns the information typed by the user (to the variable on the left of the assignment operator).
user_name = input("Enter name: ")colour = input("Enter colour: ")user_word = input("Enter word: ")print(user_name, "entered", colour, "and the word", user_word)
Enter name: AdrianaEnter colour: magentaEnter word: parolaAdriana entered magenta and the word parola
The user input is shown in bold in
a pink colour
DEMOExample01.p
y
CompSci 1016
Getting input from the user The input() function can be used with no argument
(nothing inside the round brackets) in which case there is no prompt printed.
For example:user_number = input("Enter number: ")user_input = input()
print("The user entered", user_number, "and then", user_input)
Enter number: 98??? #user enters stuff hereThe user entered 98 and then ???
Not recommend
ed!
The user input is shown in bold in
a pink colour
CompSci 1017
Getting input from the user The input() function always returns a string. The
end of line character is not returned as part of the returned string.
For exampleuser_number = input("Enter number: ")value = "hello"print(value + user_number )
Enter number: 1hello1
Concatenating two strings together
DEMOExample03.p
y
CompSci 1018
Exercise 1 Complete the output if the user enters the
number 54 when prompted:
user_number = input("Enter number: ")
print(user_number * 2, user_number * 3, user_number * 4)
Enter number: 54
CompSci 1019
Random numbers Quite often, in our programs, we need a random
number, e.g., for games and simulations. The random module contains a function, randrange(), which can be used to generate a random number. In order to use this function we need to import the
random module into our program (just as we did when we wanted to use the functions of the math class – math.sin(), math.cos(), …).
Whenever we need to get a random number in a program, the first line will be the following import statement:
import random
CompSci 10110
Random numbers The randrange() function returns a random integer
between start (inclusive) and stop (exclusive) using the syntax:
For example:
randrange(5, 10) has an equal chance of generating 5, 6, 7, 8 or 9.
import randomnumber = random.randrange(5, 10)
randrange(start, stop)
import random
dice1 = random.randrange(1, 7)dice2 = random.randrange(1, 7)print("You threw", dice1, "and a", dice2)
You threw 4 and a 1
DEMOExample04.p
y
CompSci 10111
Random numbers The randrange() function has an optional step
argument:
The step argument dictates which random numbers are generated within the range (the amount to add to the starting number), e.g., random.randrange(1, 7, 2) #generates either 1, 3 or 5random.randrange(1, 7, 3) #generates either 1 or 4
randrange(start, stop, step)
The default step when the step argument is omitted is 1.
random.randrange(-30, 100, 30)
#generates either -30, 0, 30, 60, or 90.
CompSci 10112
Exercise 2 Give the smallest and the largest possible
random number which can be generated by the following four statements:import random
print(random.randrange(4, 17, 3))
print(random.randrange(-1, 7, 2)) print(random.randrange(100, 700, 2))
print(random.randrange(50, 100, 10))
CompSci 10113
Exercise 3 Complete the following program so that it
prompts the user for their full name (assumes a single space between the first name and the second name). The program removes a random letter from the first
name and a random letter from the surname and prints the resulting name.
Enter name: Adriana FerraroAdriaa Frraro
import randomfull_name = input("Enter your full name: ")
print(full_name)
CompSci 10114
Algorithm
Prompt the user for their full name
Find the blank space position
Get the surname, first_name• first_name: 0 to blank_pos• surname: blank_pos + 1 to the end
Generate two random numbers• A random number within 0 to
len(first_name)• A random number within 0 to
len(surname)
blank_pos
CompSci 10115
Ooops! The following code causes an error:
What does this error message mean?
The subtraction operator (-) has no meaning if one of the operands is a string. We want to find a way of converting a string containing digits into a number.
age = input("Enter age: ")years_to_go = 100 - ageprint("Big birthday coming up in ", years_to_go, "years!")
Enter age: 54… years_to_go = 100 - ageTypeError: unsupported operand type(s) for -: 'int' and 'str'
1
2
3
100 - “54”
It is a 'TypeError', where you tried to subtract incompatible variables.
DEMOExample05.p
y
CompSci 10116
Converting between types The int() function converts a string containing
characters which are digits into the corresponding integer value.
The float(x) function returns a floating point number constructed from a number or string x
age = int(input("Enter age: "))years_to_go = 100 - ageprint("Big birthday coming up in ", years_to_go, "years!")
Enter age: 54Big birthday coming up in 46 years!
Enter cost $509.59Final price $468.8228
cost = input("Enter cost $")cost = float(cost)final_price = cost * 0.92print("Final price $", final_price, sep="")
CompSci 10117
Converting between types The str() function returns a string version of
object Note: String concatenation requires the two operands
to be strings: For examples:
You threw 3 and a 5
print("You threw", dice1, "and a", dice2)
print("You threw" + dice1 + "and a" + dice2)
TypeError: Can't convert 'int' object to str implicitly
print("You threw " + str(dice1) + " and a " + str(dice2))
You threw 3 and a 5
convert it to a string object
need to add a space
CompSci 10118
Converting between types The conversion has to be legal. Below are two
illegal attempts to convert:
Note that converting a string which has no decimal point into a float is fine:
number = int("12 34")
ValueError: invalid literal for int() with base 10: '12 34'
number = int("12.34")
ValueError: invalid literal for int() with base 10: '12.34'
should not have a space in between
It is not an integer!
number = float("12")print(number)
12.0
CompSci 10119
The backslash character The backslash character at the end of a line of
code in the program indicates that the statement continues onto the next line, e.g.,
user_dice = input("Enter dice throw: ")comp_dice = random.randrange(1, 7)message = "Your dice: " + user_dice + ", computer dice: " \ + str(comp_dice)print(message)
1
2
3
4
Note that the backslash is the last character in the line of code and is not inside a string (i.e., outside the quotes).
CompSci 10120
Exercise 4 MCQ:
The expression "Good " + 1 + 2 + 3 evaluates to ________.
A. Good123 B. Good6 C. Good 123 D. TypeError: Can't convert 'int' object to str implicitly
CompSci 10121
Exercise 5 Complete the following program which prompts
the user for a total of 4 dice throws, the programs calculates the sum of four random dice throws, and outputs the difference between the user guess and the sum of the dice throwing simulation:
dice_sum = 0
print("Your total:", )print("You are out by:", )
Enter sum (4 dice): 12Your total: 12 Dice total: 20You are out by: 8
Enter sum (4 dice): 15Your total: 15 Dice total: 11You are out by: 4Enter sum (4 dice): 12
Your total: 12 Dice total: 12You are out by: 0
CompSci 10122
Algorithm
Prompt the user for the total
Create a variable dice_sum
Repeat the following steps x 4 times• Generate a new random number• Add the value to the dice_sum
Calculate the difference between the dice_sum and the total
Print the result