40 Commits

Author SHA1 Message Date
68a61a4b59 Merge pull request 'week-8' (#13) from week-8 into master
Reviewed-on: https://kitsunehosting.net/gitea/Kenwood/SNHU-IT-140/pulls/13
Week 8 over! Woop!
2021-02-27 13:10:56 -05:00
Joe S
db5d2fcff3 solve 8.10 LAB 2021-02-27 13:00:53 -05:00
Joe S
f8530d6f43 solve 8.9 LAB 2021-02-27 12:55:35 -05:00
Joe S
7badebfecb solve 8.8.1 2021-02-27 12:51:15 -05:00
Joe S
e1e8b21904 solve 8.6.1 2021-02-27 12:42:50 -05:00
fe4c7b3701 Merge pull request 'week-7' (#9) from week-7 into master
Reviewed-on: https://kitsunehosting.net/gitea/Kenwood/SNHU-IT-140/pulls/9
2021-02-26 00:14:33 -05:00
Joe S
8e662c58bf Solve 7.8 LAB 2021-02-26 00:14:07 -05:00
Joe S
030dd0b611 Make autograder happy or whatever
Autograder has some issues, but these should fix them. Basicly they just reinforce that the autograder should not be doing anything wrong when running the code (being more explicit)
2021-02-22 19:53:46 -05:00
Joe S
83fb61e63b Solution so far 2021-02-21 00:51:59 -05:00
Joe S
23eec468cf Solve 6.19 LAB 2021-02-14 19:46:58 -05:00
Joe S
b7f73fb1f0 Solve 6.18 LAB 2021-02-14 19:38:31 -05:00
Joe S
b434e7f74f Solve 6.13 LAB 2021-02-14 19:30:56 -05:00
Joe S
763af28c36 Solve 6.12 LAB 2021-02-14 19:20:07 -05:00
Joe S
4fab27a9b0 Solve 6.5.3 2021-02-14 18:46:45 -05:00
Joe S
1a9d1f6386 Solve 6.3.3 2021-02-14 16:20:35 -05:00
Joe S
50b32271e2 Solve 6.3.2 2021-02-14 15:48:11 -05:00
d97e42d717 Merge pull request 'week-5' (#6) from week-5 into master
Reviewed-on: https://kitsunehosting.net/gitea/Kenwood/SNHU-IT-140/pulls/6
2021-02-08 00:20:25 -05:00
Joe S
6bef49c6b2 Solve 5.19 LAB 2021-02-08 00:19:55 -05:00
Joe S
ba5ac1f29a Solve 5.18 LAB 2021-02-08 00:03:19 -05:00
Joe S
8391478991 solve 5.17.1 2021-02-07 23:54:25 -05:00
Joe S
291fc92aa6 solve 5.12.1 2021-02-07 23:37:21 -05:00
Joe S
f609162053 solve 5.7.2 2021-02-07 21:49:11 -05:00
Joe S
6690d9cdf4 solve 5.7.1 2021-02-07 17:28:18 -05:00
Joe S
49f7781e86 Solve 5.6.1 2021-02-07 17:21:26 -05:00
Joe S
5e9c248e2f Clean up 5.3.3 2021-02-07 17:15:29 -05:00
Joe S
52e2472d13 Solve 5.5.1 2021-02-07 17:15:10 -05:00
Joe S
7b097ae89f Cleanup 5.3.2 2021-02-07 17:15:04 -05:00
Joe S
3d2870eb2c Solve 5.3.3 2021-02-07 17:07:01 -05:00
Joe S
048c002e69 Solve 5.3.2 2021-02-07 17:04:29 -05:00
2bbeb9da06 Merge pull request 'week-4' (#5) from week-4 into master
Reviewed-on: https://kitsunehosting.net/gitea/Kenwood/SNHU-IT-140/pulls/5
2021-02-03 16:53:54 -05:00
Joe S
d67fa51d83 Lame solution 2021-02-03 16:53:25 -05:00
386a40fc70 Merge pull request 'week-2' (#2) from week-2 into master
Reviewed-on: https://kitsunehosting.net/gitea/Kenwood/SNHU-IT-140/pulls/2
2021-02-02 20:57:09 -05:00
97bc27ebd1 Merge pull request 'week-3' (#4) from week-3 into master
Reviewed-on: https://kitsunehosting.net/gitea/Kenwood/SNHU-IT-140/pulls/4
2021-01-24 03:02:55 -05:00
Joe S
6d9c78c801 Complete the 2-3 Assignment 2021-01-20 00:20:26 -05:00
Joe S
e08e312789 Fix grade calculation 2021-01-20 00:06:27 -05:00
Joe S
a79e01ee28 Create creating_passwords.py 2021-01-16 23:22:49 -05:00
Joe S
2f215aa45b Create count_characters.py 2021-01-16 23:07:56 -05:00
Joe S
970aa86bcb Refactor name_format 2021-01-16 22:57:33 -05:00
Joe S
9b128a8a96 Create name_format.py 2021-01-16 22:56:07 -05:00
Joe S
e494261948 Create grade_calculation.py 2021-01-16 22:56:04 -05:00
39 changed files with 535 additions and 1 deletions

3
2/2-3/.idea/.gitignore generated vendored Normal file
View File

@@ -0,0 +1,3 @@
# Default ignored files
/shelf/
/workspace.xml

11
2/2-3/.idea/2-3.iml generated Normal file
View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
<component name="TestRunnerService">
<option name="PROJECT_TEST_RUNNER" value="pytest" />
</component>
</module>

View File

@@ -0,0 +1,6 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>

4
2/2-3/.idea/misc.xml generated Normal file
View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.7" project-jdk-type="Python SDK" />
</project>

8
2/2-3/.idea/modules.xml generated Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/2-3.iml" filepath="$PROJECT_DIR$/.idea/2-3.iml" />
</modules>
</component>
</project>

6
2/2-3/.idea/vcs.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
</component>
</project>

Binary file not shown.

Binary file not shown.

20
2/2-3/main.py Normal file
View File

@@ -0,0 +1,20 @@
import datetime
def prompt_user():
name = input('What is your name? ')
try:
age = int(input('How old are you? '))
except ValueError:
return 'Age must be a number.'
return 'Hello {0}! You were born in {1}.'.format(name, get_year() - age)
def get_year():
now = datetime.datetime.now()
return now.year
if __name__ == '__main__':
print(prompt_user())

View File

@@ -0,0 +1,20 @@
def output_format_one(first, middle, last):
_format = "{0}, {1}.".format(last, first[0])
return _format
def output_format_two(first, middle, last):
_format = "{0}, {1}.{2}.".format(last, first[0], middle[0])
return _format
if __name__ == '__main__':
name = input("Input your name: ")
name = name.split(' ')
if len(name) == 2:
name = output_format_one(name[0], None, name[1])
elif len(name) == 3:
name = output_format_two(name[0], name[1], name[2])
print(name)

View File

@@ -0,0 +1,15 @@
if __name__ == '__main__':
_input = input()
character, phrase = [_input.split(' ', 1)[i] for i in range(2)]
frequency = phrase.count(character)
frequency_nocase = phrase.upper().count(character.upper())
if frequency != 0:
print(frequency)
#elif frequency_nocase > 0: # Lol im stupid~
# print("{0} is diferent than {1}.".format(character, character.upper()))
if frequency == 0 & frequency_nocase == 0:
print(frequency)

View File

@@ -0,0 +1,16 @@
if __name__ == '__main__':
favorite_color = input('Enter favorite color:\n')
pets_name = input('Enter pet\'s name:\n')
favorite_number = input('Enter a number:\n')
print('You entered: {0} {1} {2}\n'.format(favorite_color, pets_name, favorite_number))
first_password = '{0}_{1}'.format(favorite_color, pets_name)
second_password = '{0}{1}{0}'.format(favorite_number, favorite_color)
print('First password: {0}'.format(first_password))
print('Second password: {0}\n'.format(second_password))
print('Number of characters in {0}: {1}'.format(first_password, len(first_password)))
print('Number of characters in {0}: {1}'.format(second_password, len(second_password)))

View File

@@ -0,0 +1,20 @@
def collect_grades():
grades = []
print('Enter a score on an exam. If the weight is different than x/100 specify using (grade)/(weight).')
while True:
_input = input('''Enter a score on an exam. ( 93 OR 93/100)\n(Press enter to stop):\n''')
if len(_input) == 0:
break
grades.append(_input)
return grades
if __name__ == '__main__':
print(collect_grades())
exam1_grade = float(input('Enter score on Exam 1 (out of 100):\n'))
exam2_grade = float(input('Enter score on Exam 2 (out of 100):\n'))
exam3_grade = float(input('Enter score on Exam 3 (out of 100):\n'))
overall_grade = (exam1_grade + exam2_grade + exam3_grade) / 3
print('Your overall grade is:', overall_grade)

View File

@@ -2,6 +2,12 @@ user_score = 0
simon_pattern = input()
user_pattern = input()
user_score = sum(a==b for a, b in zip(simon_pattern, user_pattern))
#user_score = sum(a==b for a, b in zip(simon_pattern, user_pattern))
for char in enumerate(list(simon_pattern)):
if user_pattern[char[0]] == char[1]:
user_score += 1
else:
break
print('User score:', user_score)

9
5/5.12/5.12.1/main.py Normal file
View File

@@ -0,0 +1,9 @@
def swap(list):
m_list = list[0], list[-1] = list[-1], list[0]
return m_list
values_list = input().split(',') # Program receives comma-separated values like 5,4,12,19
swap(values_list)
print(values_list)

12
5/5.17/5.17.1/main.py Normal file
View File

@@ -0,0 +1,12 @@
gas_const = 8.3144621
def compute_gas_volume(pressure, temperature, moles):
return (moles * gas_const * temperature) / pressure
gas_pressure = float(input())
gas_moles = float(input())
gas_temperature = float(input())
gas_volume = 0.0
gas_volume = compute_gas_volume(gas_pressure, gas_temperature, gas_moles)
print('Gas volume:', gas_volume, 'm^3')

6
5/5.18 LAB/main.py Normal file
View File

@@ -0,0 +1,6 @@
def swap_values(user_val1, user_val2):
return user_val2, user_val1
if __name__ == '__main__':
val1, val2 = swap_values(input(), input())
print('{0} {1}'.format(val1, val2))

46
5/5.19 LAB/main.py Normal file
View File

@@ -0,0 +1,46 @@
coins = [
['Dollars', 'Dollar'],
['Quarters', 'Quarter'],
['Dimes', 'Dime'],
['Nickels', 'Nickel'],
['Pennies', 'Penny']]
def coin_enumeration(change):
if len(change) != 0:
for coin in coins:
num_coins = change.count(coin)
if num_coins != 0:
if num_coins > 1:
print('{0} {1}'.format(num_coins, coin[0].lower()))
else:
print('{0} {1}'.format(num_coins, coin[1].lower()))
else:
print('no change')
def fit_coin(to_make, coin_val):
num_coin = to_make // coin_val
remainder = to_make - (num_coin * coin_val)
return num_coin, remainder
def exact_change(input_val):
nd, input_val = fit_coin(input_val, 100)
nq, input_val = fit_coin(input_val, 25)
ndime, input_val = fit_coin(input_val, 10)
nn, input_val = fit_coin(input_val, 5)
np, input_val = fit_coin(input_val, 1)
return nd, nq, ndime, nn, np
if __name__ == '__main__':
change = []
input_val = int(input())
num_dollars, num_quarters, num_dimes, num_nickels, num_pennies = exact_change(input_val)
change.extend([coins[0] for i in range(num_dollars)])
change.extend([coins[1] for i in range(num_quarters)])
change.extend([coins[2] for i in range(num_dimes)])
change.extend([coins[3] for i in range(num_nickels)])
change.extend([coins[4] for i in range(num_pennies)])
coin_enumeration(change)

19
5/5.3/5.3.2/main.py Normal file
View File

@@ -0,0 +1,19 @@
def find_max(num_1, num_2):
max_val = 0.0
if (num_1 > num_2): # if num1 is greater than num2,
max_val = num_1 # then num1 is the maxVal.
else: # Otherwise,
max_val = num_2 # num2 is the maxVal
return max_val
max_sum = 0.0
num_a = float(input())
num_b = float(input())
num_y = float(input())
num_z = float(input())
max_sum = sum([max([num_a, num_b]), max([num_y, num_z])])
print('max_sum is:', max_sum)

9
5/5.3/5.3.3/main.py Normal file
View File

@@ -0,0 +1,9 @@
def pyramid_volume(base_length, base_width, pyramid_height):
return(((base_length * base_width) * pyramid_height) * (1/3))
length = float(input())
width = float(input())
height = float(input())
print('Volume for 4.5, 2.1, 3.0 is:', pyramid_volume(length, width, height))

8
5/5.5/5.5.1/main.py Normal file
View File

@@ -0,0 +1,8 @@
def mph_and_minutes_to_miles(mph, dt):
return (dt / 60) * mph
miles_per_hour = float(input())
minutes_traveled = float(input())
print('Miles: {:f}'.format(mph_and_minutes_to_miles(miles_per_hour, minutes_traveled)))

22
5/5.6/5.6.1/main.py Normal file
View File

@@ -0,0 +1,22 @@
def get_user_num():
# This is bad practice, you should use python ABC or raise NotImplementedError instead.
print('FIXME: Finish get_user_num()')
return -1
#raise NotImplementedError
def compute_avg(user_num1, user_num2):
# This is bad practice, you should use python ABC or raise NotImplementedError instead.
print('FIXME: Finish compute_avg()')
return -1
#raise NotImplementedError
user_num1 = 0
user_num2 = 0
avg_result = 0
user_num1 = get_user_num()
user_num2 = get_user_num()
avg_result = compute_avg(user_num1, user_num2)
print('Avg:', avg_result)

12
5/5.7/5.7.1/main.py Normal file
View File

@@ -0,0 +1,12 @@
def print_popcorn_time(bag_ounces):
if bag_ounces < 3:
print('Too small') # This should be returned instead.
elif bag_ounces > 10:
print('Too large') # This should be returned instead.
else:
print('{0} seconds'.format(6 * bag_ounces)) # This should be returned instead.
user_ounces = int(input())
print_popcorn_time(user_ounces)

13
5/5.7/5.7.2/main.py Normal file
View File

@@ -0,0 +1,13 @@
def shampoo_instructions(num_cycles):
if num_cycles < 1:
print('Too few.')
elif num_cycles > 4:
print('Too many.')
else:
for i in range(num_cycles):
print('{0} : Lather and rinse.'.format(i + 1))
print('Done.')
user_cycles = int(input())
shampoo_instructions(user_cycles)

2
6/6.12 LAB/main.py Normal file
View File

@@ -0,0 +1,2 @@
user_input = input().split()
print(int(sum(map(int, user_input)) / len(user_input)), max(map(int, user_input)))

3
6/6.13 LAB/main.py Normal file
View File

@@ -0,0 +1,3 @@
user_input = input().split()
print(*sorted([i for i in list(map(int, user_input)) if i >= 0]), '', end='')

4
6/6.18 LAB/main.py Normal file
View File

@@ -0,0 +1,4 @@
user_input = input().split()
for element in user_input:
print(element, user_input.count(element))

9
6/6.19 LAB/main.py Normal file
View File

@@ -0,0 +1,9 @@
replacement_list = dict((k.strip(), v.strip()) for k,v in
(item.split() for item in input().split(' ')))
lab_text = input()
for element in replacement_list:
lab_text = lab_text.replace(element, replacement_list[element])
print(lab_text)

9
6/6.3/6.3.2/main.py Normal file
View File

@@ -0,0 +1,9 @@
user_input = input()
test_grades = list(map(int, user_input.split())) # test_grades is an integer list of test scores
sum_extra = -999 # Initialize 0 before your loop
sum_extra = sum([i for i in test_grades if i > 100]) - (len([i for i in test_grades if i > 100]) * 100)
print('Sum extra:', sum_extra)

10
6/6.3/6.3.3/main.py Normal file
View File

@@ -0,0 +1,10 @@
user_input = input()
hourly_temperature = user_input.split()
result = []
for temp in hourly_temperature:
result.append(temp)
result.append('->')
result.pop()
print(*result, '')

20
6/6.5/6.5.3/main.py Normal file
View File

@@ -0,0 +1,20 @@
user_input= input()
lines = user_input.split(',')
# This line uses a construct called a list comprehension, introduced elsewhere,
# to convert the input string into a two-dimensional list.
# Ex: 1 2, 2 4 is converted to [ [1, 2], [2, 4] ]
mult_table = [[int(num) for num in line.split()] for line in lines]
def print_array(array):
result = []
for row in array:
result = []
for column in row:
result.append(column)
result.append('|')
result.pop()
print(*result)
print_array(mult_table)

1
7/7.8 LAB/input1.csv Normal file
View File

@@ -0,0 +1 @@
hello,cat,man,hey,dog,boy,Hello,man,cat,woman,dog,Cat,hey,boy
1 hello cat man hey dog boy Hello man cat woman dog Cat hey boy

18
7/7.8 LAB/main.py Normal file
View File

@@ -0,0 +1,18 @@
import csv
with open(input(), newline='') as f:
reader = csv.reader(f)
data = list(reader)[0]
result = {}
for entry in data:
try:
result[entry]
result[entry] = result[entry] + 1
except KeyError:
result[entry] = 1
for key in result:
print('{0} {1}'.format(key, result[key]))

12
7/7.9 LAB/file1.txt Normal file
View File

@@ -0,0 +1,12 @@
20
Gunsmoke
30
The Simpsons
10
Will & Grace
14
Dallas
20
Law & Order
12
Murder, She Wrote

61
7/7.9 LAB/main.py Normal file
View File

@@ -0,0 +1,61 @@
class MutliKeyDict(dict):
"""
New Multi Key dict for this application, inherits 'dict'
"""
def __setitem__(self, key, value): # Overwrites the default __setitem__
try:
self[key]
except KeyError: # If there is a key error (like we append the same season num twice)
super(MutliKeyDict, self).__setitem__(key, []) # Make that value a list insted,
self[key].append(value) # Append that new list and save
def pharse_shows(file_location):
result = MutliKeyDict()
try:
with open(file_location) as f:
for line in f:
season = line.strip("\n")
title = next(f).strip("\n")
result[season] = title
except StopIteration:
print('Error pharsing last value, odd number of lines in file?')
return(result)
def save_output_keys(showdict):
result = '' # Set the result to a blank string
showdict = dict(sorted(showdict.items())) # Sort the dict by key
for entry in showdict: # For every dict entry in our show dict
result += '{0}: '.format(int(entry)) # Append a new line to represent that entry season count
if isinstance(showdict[entry], list): # If the entry is a list of shows
for show in showdict[entry]: # for very entry in that list of shows
result += '{0}; '.format(show) # append that show, and a ";"
result = result[:-2] + '\n' # Chop the last ";", ugly but it works. Also add carriage return
else: # If the entry is not a list
result += '{0}'.format(showdict[entry])
with open('output_keys.txt', 'w') as f:
f.write(result)
def save_output_titles(showdict):
result = [] # Set the result to a blank list
for entry in showdict: # For every dict entry in our show dict
if isinstance(showdict[entry], list): # If the entry is a list of shows
for show in showdict[entry]: # for every entry in that list of shows
result.append(show) # Append that show to our result list
else: # If the entry is not a list
result.append(showdict[entry]) # Append the result directly
result.sort() # Sort the list
resultstring = '' # Setup a new blank result string
for item in result: # Convert list to stirng, with \n
resultstring += str(item) + '\n'
with open('output_titles.txt', 'w') as f:
f.write(resultstring)
if __name__ == '__main__':
showdict = pharse_shows(input())
save_output_keys(showdict)
save_output_titles(showdict)

27
8/8.10 LAB/main.py Normal file
View File

@@ -0,0 +1,27 @@
class Team:
def __init__(self):
self.team_name = 'none'
self.team_wins = 0
self.team_losses = 0
self.win_percentage = 0
def get_win_percentage(self):
return self.team_wins / (self.team_wins + self.team_losses)
if __name__ == "__main__":
team = Team()
team_name = input()
team_wins = int(input())
team_losses = int(input())
team.team_name = team_name
team.team_wins = team_wins
team.team_losses = team_losses
if team.get_win_percentage() >= 0.5:
print('Congratulations, Team', team.team_name,'has a winning average!')
else:
print('Team', team.team_name, 'has a losing average.')

24
8/8.6/8.6.1/main.py Normal file
View File

@@ -0,0 +1,24 @@
class PhonePlan:
# FIXME add constructor
def __init__(self, _num_mins=0, _num_messages=0):
self.num_mins = _num_mins
self.num_messages = _num_messages
def print_plan(self):
print('Mins:', self.num_mins, end=' ')
print('Messages:', self.num_messages)
my_plan = PhonePlan(int(input()), int(input()))
dads_plan = PhonePlan()
moms_plan = PhonePlan(int(input()))
print('My plan...', end=' ')
my_plan.print_plan()
print('Dad\'s plan...', end=' ')
dads_plan.print_plan()
print('Mom\'s plan...', end= ' ')
moms_plan.print_plan()

15
8/8.8/8.8.1/main.py Normal file
View File

@@ -0,0 +1,15 @@
class CarRecord:
def __init__(self):
self.year_made = 0
self.car_vin = ''
# FIXME add __str__()
def __str__(self):
return'Year: {0}, VIN: {1}'.format(self.year_made, self.car_vin)
my_car = CarRecord()
my_car.year_made = int(input())
my_car.car_vin = input()
print(my_car)

28
8/8.9 LAB/main.py Normal file
View File

@@ -0,0 +1,28 @@
class Car:
def __init__(self):
self.model_year = 0
self.purchase_price = 0
self.current_value = 0
def calc_current_value(self, current_year):
depreciation_rate = 0.15
# Car depreciation formula
car_age = current_year - self.model_year
self.current_value = round(self.purchase_price * (1 - depreciation_rate) ** car_age)
def print_info(self):
return """Car's information:
Model year: {0}
Purchase price: {1}
Current value: {2}""".format(self.model_year, self.purchase_price, self.current_value)
if __name__ == "__main__":
year = int(input())
price = int(input())
current_year = int(input())
my_car = Car()
my_car.model_year = year
my_car.purchase_price = price
my_car.calc_current_value(current_year)
print(my_car.print_info())