My Python Codes
My Python Codes
3.1 Write a program to prompt the user for hours and rate per hour using input to compute gross pay. Pay the hourly
rate for the hours up to 40 and 1.5 times the hourly rate for all hours worked above 40 hours. Use 45 hours and a rate
of 10.50 per hour to test the program (the pay should be 498.75). You should use input to read a string and float() to
convert the string to a number. Do not worry about error checking the user input - assume the user types numbers
properly.
Solution:
3.3 Write a program to prompt for a score between 0.0 and 1.0. If the score is out of range, print an error. If the score
is between 0.0 and 1.0, print a grade using the following table:
Score Grade
>= 0.9 A
>= 0.8 B
>= 0.7 C
>= 0.6 D
< 0.6 F
If the user enters a value out of range, print a suitable error message and exit. For the test, enter a score of 0.85.
Solution:
score = input("Enter Score: ")
x = float(score)
if x >= 0.9 and x < 1.0:
print("A")
elif x >= 0.8 and x < 0.9:
print("B")
elif x >= 0.7 and x < 0.8:
print("C")
elif x >= 0.6 and x < 0.7:
print("D")
elif x > 0.0 and x < 0.6:
print("F")
else:
print("error")
4.6 Write a program to prompt the user for hours and rate per hour using input to compute gross pay. Pay should be
the normal rate for hours up to 40 and time-and-a-half for the hourly rate for all hours worked above 40 hours. Put
the logic to do the computation of pay in a function called computepay() and use the function to do the computation.
The function should return a value. Use 45 hours and a rate of 10.50 per hour to test the program (the pay should be
498.75). You should use input to read a string and float() to convert the string to a number. Do not worry about error
checking the user input unless you want to - you can assume the user types numbers properly. Do not name your
variable sum or use the sum() function.
Solution:
def computepay(hours, rate):
if hours <= 40:
pay = hours * rate
else:
pay = 40 * rate + (hours - 40) * rate * 1.5
return pay
5.2 Write a program that repeatedly prompts a user for integer numbers until the user enters 'done'. Once 'done' is
entered, print out the largest and smallest of the numbers. If the user enters anything other than a valid number catch
it with a try/except and put out an appropriate message and ignore the number. Enter 7, 2, bob, 10, and 4 and match
the output below.
Solution:
largest = None
smallest = None
while True:
num = input("Enter an integer number (or 'done' to exit): ")
if num == 'done':
break
try:
num = int(num)
if largest is None or num > largest:
largest = num
if smallest is None or num < smallest:
smallest = num
except ValueError:
print("Invalid input")
if largest is not None and smallest is not None:
print("Maximum is", largest)
print("Minimum is", smallest)
6.5 Write code using find() and string slicing (see section 6.10) to extract the number at the end of
the line below. Convert the extracted value to a floating point number and print it out.
7.1 Write a program that prompts for a file name, then opens that file and reads through the file, and
print the contents of the file in upper case. Use the file words.txt to produce the output below.
You can download the sample data at http://www.py4e.com/code3/words.txt
# Use words.txt as the file name
fname = input("Enter file name: ")
fh = open(fname)
for x in fh:
y = x.rstrip()
print(y.upper())
8.4 Open the file romeo.txt and read it line by line. For each line, split the line into a list of words
using the split() method. The program should build a list of words. For each word on each line check
to see if the word is already in the list and if not append it to the list. When the program completes,
sort and print the resulting words in python sort() order as shown in the desired output.
fname = input("Enter file name: ")
fh = open(fname)
lines = fh.readlines()
lst = []
for line in lines:
#words = line.rstrip()
word = line.split()
for W in word:
if W not in lst:
lst.append(W)
lst.sort()
print(lst)
9.4 Write a program to read through the mbox-short.txt and figure out who has sent the greatest
number of mail messages. The program looks for 'From ' lines and takes the second word of those
lines as the person who sent the mail. The program creates a Python dictionary that maps the
sender's mail address to a count of the number of times they appear in the file. After the dictionary is
produced, the program reads through the dictionary using a maximum loop to find the most prolific
committer.
"name = input("Enter file:")
if len(name) < 1:
name = "mbox-short.txt"
handle = open(name)""""
# Initialize an empty dictionary to store sender counts
sender_counts = {}
10.2 Write a program to read through the mbox-short.txt and figure out the distribution by hour of the
day for each of the messages. You can pull the hour out from the 'From ' line by finding the time and
then splitting the string a second time using a colon.
From [email protected] Sat Jan 5 09:14:16 2008
Once you have accumulated the counts for each hour, print out the counts, sorted by hour as shown
below.