Add lots of old weird school stuff

This commit is contained in:
newt 2024-10-09 18:02:27 +01:00
parent 37b80b8570
commit f30789450e
132 changed files with 198354 additions and 0 deletions

View file

@ -0,0 +1,37 @@
import urllib.request
guessed = []
correct = []
# Get a word from the API
word = urllib.request.urlopen('http://random-word-api.herokuapp.com/word?number=1').read().decode()
word = str(word[2:len(word)-2])
print(word)
lives = 6
letters = []
for i in word:
letters.append(i)
while lives != 0:
# Take in a guess
letter = input('Please enter a letter: ').lower()
# Ensure that the letter is valid, and has not already been guessed
if len(letter) > 1 or letter.isnumeric():
print('That is not a letter!')
continue
if letter in guessed:
print('You have already guessed \'{0}\'!'.format(letter))
continue
# Ensure that the letter is in the word - if not, subtract a life
if letter in word:
correct.append(letter) # Add the letter to the correct list
# If the unordered list of correct letters is the same as the unordered list of letters in the word, the player wins
if set(correct) == set(letters):
print('You won, with {0} lives to spare! The word was {1}'.format(str(lives), word))
lives = 0
else:
lives -= 1
print('Uh oh! \'{0}\' is wrong! You have {1} lives left.'.format(letter, str(lives)))
guessed.append(letter)

View file

@ -0,0 +1,208 @@
#-------------------------------------------------------------------------------
# Name: calculator v1.2 - decimal point added
# Purpose: calculator using TKinter
#
# Author: L Jacob
#
# Created: 23/07/2015
# Copyright: (c) L Jacob 2015
# Licence: <your licence>
#-------------------------------------------------------------------------------
from tkinter import *
from decimal import Decimal
##Functions for mathematic operations##
def add(a, b):
return a + b
def subtract(a, b):
return a - b
def divide(a, b):
return a / b
def multiply(a,b):
return a * b
def updateDisplay(update):
##Function to display results##
outputLbl.configure(text = str(update))
def handlerEquals(event):
##Event handler for equals button##
##Function requires operand to be specified so that correct operation is performed##
global first_num ## use the variable of this name that has been created outside of this function, i.e. our 'global' variable
global second_num
global operand
##convert user inputs to numbers ready to do the maths##
first_num = Decimal(first_num)
second_num = Decimal(second_num)
if operand != None:
if operand == '+':
result = add(first_num,second_num)
elif operand == '-':
result = subtract(first_num,second_num)
elif operand == '/':
if second_num == 0:
result = 'You can not divide by zero!'
first_num = None
second_num = None
operand = None
else:
result = divide(first_num,second_num)
elif operand == '*':
result = multiply(first_num,second_num)
updateDisplay(result)
def handlerOperand(event):
##Event Handler for operation buttons##
##Function to store users choice of add, subtract, divide, multiply##
global operand
caller = event.widget['text'] #get the text value of the button that is passed in to the handler
if operand == None:
operand = caller
updateDisplay(0)
else:
pass ##prevent the operand from being changed accidentally
def handlerNumbers(event):
##Event Handler for number buttons##
##Function puts user input in first_num if operand is empty, otherwise input goes second_num##
global first_num
global second_num
global operand
caller = event.widget['text'] #get the text value of the button that is passed in to the handler
if operand == None:
if first_num == None: #check to see if num is set to None as we cannot append to none - must overwrite
first_num = caller
updateDisplay(first_num)
else:
first_num = first_num + caller
updateDisplay(first_num)
else:
if second_num == None:
second_num = caller
updateDisplay(second_num)
else:
second_num = second_num + caller
updateDisplay(second_num)
def handlerClear(event):
##Event handler for C button##
##Resets variables and updates the display##
global first_num
global second_num
global operand
first_num = None
second_num = None
operand = None
updateDisplay(0)
##MAIN BODY CODE STARTS##
##setup gobal variables that all functions can access##
first_num = None
second_num = None
operand = None
window = Tk()#create the window#
# Code to add widgets will go here...
##Setup frames##
topframe = Frame(window)
topframe.pack()
bottomframe = Frame(window)
bottomframe.pack(side = BOTTOM)
##setup label to display output in top frame##
outputLbl = Label(topframe, text = "0")
outputLbl.pack()
##setup number buttons in grid layout within bottom frame##
b1 = Button(bottomframe, text='1')
b1.bind("<1>", handlerNumbers)
b1.grid(row=0, column = 0)
b2 = Button(bottomframe, text='2') ## create Button called b2 that is inside the bottom frame and displays the label '2'##
b2.bind("<1>", handlerNumbers) ##on b2, bind the event 'when mouse button 1 is clicked (i.e. left mouse button), call the function named 'handlerNumbers'##
b2.grid(row=0, column = 1) ##place button b2 in a grid within its frame, in 0 down and 1 across##
b3 = Button(bottomframe, text='3')
b3.bind("<1>", handlerNumbers)
b3.grid(row=0, column = 2)
b4 = Button(bottomframe, text='4')
b4.bind("<1>", handlerNumbers)
b4.grid(row=1, column = 0)
b5 = Button(bottomframe, text='5')
b5.bind("<1>", handlerNumbers)
b5.grid(row=1, column = 1)
b6 = Button(bottomframe, text='6')
b6.bind("<1>", handlerNumbers)
b6.grid(row=1, column = 2)
b7 = Button(bottomframe, text='7')
b7.bind("<1>", handlerNumbers)
b7.grid(row=2, column = 0)
b8 = Button(bottomframe, text='8')
b8.bind("<1>", handlerNumbers)
b8.grid(row=2, column = 1)
b9 = Button(bottomframe, text='9')
b9.bind("<1>", handlerNumbers)
b9.grid(row=2, column = 2)
b0 = Button(bottomframe, text='0')
b0.bind("<1>", handlerNumbers)
b0.grid(row=3, column = 1)
bDot = Button(bottomframe, text='.')##decimal point button
bDot.bind("<1>", handlerNumbers)
bDot.grid(row=4, column = 0)
##setup operand buttons##
bPlus = Button(bottomframe, text='+')
bPlus.bind("<1>", handlerOperand)
bPlus.grid(row=4, column = 2)
bMinus = Button(bottomframe, text='-')
bMinus.bind("<1>", handlerOperand)
bMinus.grid(row=4, column = 3)
bDivide = Button(bottomframe, text='/')
bDivide.bind("<1>", handlerOperand)
bDivide.grid(row=5, column = 2)
bMultiply = Button(bottomframe, text='*')
bMultiply.bind("<1>", handlerOperand)
bMultiply.grid(row=5, column = 3)
bEquals = Button(bottomframe, text='=')
bEquals.bind("<1>", handlerEquals)
bEquals.grid(row=6, column=0)
##setup Clear button##
bClear = Button(bottomframe, text='C')
bClear.bind("<1>", handlerClear)
bClear.grid(row=6, column=2)
## Code to add widgets ends. Mainloop keeps program running whilst waiting for user input##
window.mainloop()

View file

@ -0,0 +1,71 @@
operators=["+","-", "*", "/"] #list of operators
operatorNames=["add","subtract","multiply","divide"]
def addNums(num1, num2):
"""Function to return to sum of the parameters"""
answer = num1+num2
return answer
def subNums(num1,num2):
answer = num1-num2
return answer
def multiplyNums(num1,num2):
answer = num1*num2
return answer
def divideNums(num1,num2):
answer = num1/num2
return answer
def checkChoice():
global operators
choice = (input("Enter the operator"))
if choice in operators:
return choice
else:
print("Error!")
return ""
#end of choice check
def menu():
"""Subroutine to run the menu"""
global operators # global variable to access the list of operators
global operatorNames # global variable to access the list of operator names
choice = "" #declare an empty string variable to hold the user's choice of operator
answer = 0 #declare an integer variable to hold the result
number1 = int(input("Enter Number 1"))
number2 = int(input("Enter Number 2"))
#-----------------print the accepted operators--------------------
print ("Select the operator:")
for i in range(0,len(operators)):
print(operators[i]," ", operatorNames[i])
#-----------------call the checkChoice function--------------------
while choice=="":
choice = checkChoice()
#-----------------call the correct operator function--------------------
if choice == "+":
answer = addNums(number1,number2)
elif choice =="-":
answer = subNums(number1,number2)
elif choice == "*":
answer = multiplyNums(number1,number2)
elif choice == "/":
if number2 == 0:
print('You can not divide by zero!')
menu()
else:
answer = divideNums(number1,number2)
else:
print("sorry something went wrong!")
#-----------------output--------------------
print(number1, choice, number2, "=", answer)
return
menu()

View file

@ -0,0 +1,89 @@
from tkinter import *
def addCat(event):
global pets
pets['cats'] = pets['cats'] + 1
updateDisplay()
def addDog(event):
global pets
pets['dogs'] = pets['dogs'] + 1
updateDisplay()
def addHamster(event):
global pets
pets['hamsters'] = pets['hamsters'] + 1
updateDisplay()
def addOther(event):
global pets
content = txtBox.get()
txtBox.delete(0, 'end')
if content.lower() not in pets:
pets[content.lower()] = 1
else:
pets[content.lower()] = pets[content.lower()] + 1
updateDisplay()
def reset(event):
global pets
for i in pets:
pets[i] = 0
updateDisplay()
def updateDisplay():
global pets
outputStr = 'There are '
for i in pets:
outputStr += '{0} {1}, '.format(pets[i], i)
##Function to display results##
outputLbl.configure(text = outputStr)
pets = { 'cats': 0, 'dogs': 0, 'hamsters': 0 }
window = Tk()#create the window#
window.title("Jacob's")
# Code to add widgets will go here...
##Setup frames##
topframe = Frame(window)
topframe.pack()
bottomframe = Frame(window)
bottomframe.pack(side = BOTTOM)
##setup label to display output in top frame##
welcome = Label(topframe, fg="red", font=("Helvetica", 16), text = "Welcome to Cat or Dog Selector")
welcome.pack()
outputLbl = Label(topframe, text = "0")
outputLbl.pack()
#setup buttons in grid layout within bottom frame##
catBtn = Button(bottomframe, text='Cat')
catBtn.bind("<1>", addCat)
catBtn.grid(row=0, column=1)
dogBtn = Button(bottomframe, text='Dog')
dogBtn.bind("<1>", addDog)
dogBtn.grid(row=0, column=2)
hamBtn = Button(bottomframe, text='Hamster')
hamBtn.bind('<1>', addHamster)
hamBtn.grid(row=0, column=3)
txtBox = Entry(bottomframe)
txtBox.grid(row=2, column=2)
submit = Button(bottomframe, text='Submit')
submit.bind('<1>', addOther)
submit.grid(row=2, column=3)
r = Button(bottomframe, text='Reset')
r.bind('<1>', reset)
r.grid(row=1, column=2)
# Code to add widgets ends. Mainloop keeps program running whilst waiting for user input##
window.mainloop()

View file

@ -0,0 +1,26 @@
def catOrDog():
global cat, dog
got = input('Enter what type of pet you have')
got = got.lower()
if got == 'dog':
dog = dog + 1
elif got == 'cat':
cat = cat + 1
else:
print('Only cats and dogs count.')
def printTotals():
global cat, dog
print('Total cats: {0}'.format(cat))
print('Total dogs: {0}'.format(dog))
cat = 0
dog = 0
while True:
catOrDog()
printTotals()
again = input('Again? y/n')
if again == 'n':
break

View file

@ -0,0 +1,46 @@
#-------------------------------------------------------------------------------
# Name: Temperature Bar Chart Project
# Purpose: A turtle program that draws a bar chart based on an array of
# inputted floats.
#-------------------------------------------------------------------------------
import turtle
# sub-routine to draw a bar
def drawBar(t, h):
t.left(90)
t.forward(h)
t.right(90)
t.forward(40)
t.right(90)
t.forward(h)
t.left(90)
# collect data
inp = input('Please input your list of floats. Separate each float by a comma.')
inp = inp.split(',')
data = []
for i in inp:
data.append(float(i))
maxheight = max(data)
numbars = len(data)
border = 10
# create a window
wn = turtle.Screen()
wn.setworldcoordinates(0-border, 0-border, 40*numbars+border, maxheight+border)
wn.bgcolor('lightgreen')
# create a turtle
t = turtle.Turtle()
t.color('blue')
t.fillcolor('red')
t.pensize(3)
# draw bars
for i in data:
drawBar(t, i)
wn.exitonclick()

View file

@ -0,0 +1,76 @@
MAX = 45
classes = {}
def mean(x):
return sum(x) / len(x)
def median(x):
n = len(x)
i = n // 2
if n % 2:
return sorted(x)[i]
return sum(sorted(x)[i - 1:i + 1]) / 2
# Read the data file
data = open('marks.csv')
lines = data.readlines()
for line in lines:
# Figure out the name of the class
lineNumber = lines.index(line) + 1
className = 'Class ' + str(lineNumber)
# Parse the csv to figure out the marks for each class
marks = line.split(',')
for i in marks:
index = marks.index(i)
marks[index] = int(i) # Ensure all of the marks are formatted as integers
# Ensure that the max amount of marks is not breached
for i in marks:
if i > MAX:
raise Exception('Line/Class {0} contains a mark higher than the max attainable ({1})'.format(str(lineNumber), str(MAX)))
# Initialise the class dictionary, and assign the marks value
classes[className] = {}
classes[className]['marks'] = marks
# Calculate the mean and median for each class
classes[className]['mean'] = mean(marks)
classes[className]['median'] = median(marks)
# Calculate how many students are above and below the median
above = 0
below = 0
for i in marks:
if i > classes[className]['median']:
above += 1
elif i < classes[className]['median']:
below += 1
classes[className]['aboveMedian'] = above
classes[className]['belowMedian'] = below
# Find the class with the highest mean
allMeans = []
for i in classes:
allMeans.append(classes[i]['mean']) # Put all of the means into a list
highestMean = max(allMeans) # Find the highest of those means
for i in classes:
for k, v in classes[i].items():
if k == 'mean' and v == highestMean: # Find the matching key and value
highestMean = i # Set the highestMean to the class name
# Find the median across all classes
allMarks = []
for i in classes:
allMarks += classes[i]['marks'] # Concatenate all marks lists
medianAcross = median(allMarks) # Find the median of that concatenated list
# Output
print('Results!\n-----------')
for i in classes:
c = classes[i]
print('{0}:\n\nMean: {1}\nMedian: {2}\nAbove Median: {3}\nBelow Median: {4}\n-----------'.format(i, str(c['mean']), str(c['median']), str(c['aboveMedian']), str(c['belowMedian'])))
print('\nClass with the highest mean mark: {0}\nMedian mark across all classes: {1}'.format(str(highestMean), str(medianAcross)))

View file

@ -0,0 +1,2 @@
17,22,8,31,30,29,16,17,23,32
23,6,25,44,19,21,8,18,29,41
1 17 22 8 31 30 29 16 17 23 32
2 23 6 25 44 19 21 8 18 29 41

View file

@ -0,0 +1,60 @@
from random import randint
class Dice:
# Initialise the class - make the default amount of sides 6
def __init__(self, sides=6):
self.sides = sides
# Roll the dice once - return an integer
def roll(self):
return randint(1, self.sides)
class Player:
# Initialise the class - create a dice and initialise the score parameter
def __init__(self, id, dice):
self.id = id
self.dice = dice
self.score = 0
self.rolls = []
# Roll the dice a specified amount of times - return an array of integers
def rollMany(self, times):
for i in range(times):
num = self.dice.roll()
self.rolls.append(num)
def reset(self):
self.rolls = []
self.score = 0
class Game:
def __init__(self, *player):
self.players = player
def determineWinner(self):
scores = {}
for i in self.players:
i.score = sum(i.rolls)
scores[i.id] = i.score
highestScore = max(scores.values())
for player, score in scores.items():
if score == highestScore:
if list(scores.values()).count(highestScore) > 1:
drew = []
for i in self.players:
if i.score == highestScore:
drew.append(str(i.id))
print("Players {0} have drawn first place with {1} score!".format(', '.join(drew), highestScore))
else:
playerInfo = self.players[player - 1]
print("Player {0} wins with {1} score!".format(player, playerInfo.score))
break
dice = Dice()
p1 = Player(1, dice)
p2 = Player(2, dice)
p1.rollMany(6)
p2.rollMany(6)
game = Game(p1, p2)
game.determineWinner()

View file

@ -0,0 +1,47 @@
from random import randint
class Dice:
# Initialise the class - make the default amount of sides 6
def __init__(self, sides=6):
self.sides = sides
# Roll the dice once - return an integer
def roll(self):
return randint(1, self.sides)
# Roll the dice a specified amount of times - return an array of integers
def rollMany(self, times):
res = []
for i in range(times):
num = self.roll()
res.append(num)
return res
dice = Dice() # Create an instance of the class Dice
p1 = dice.rollMany(6) # Roll 6 dice for player 1
p2 = dice.rollMany(6) # Roll 6 dice for player 2
p1score = sum(p1) # Calculate player 1's score
p2score = sum(p2) # Calculate player 2's score
# Output player 1's rolls and score for the user to see
print("Player 1 rolls ({0})".format(p1score))
for i in p1:
pos = p1.index(i) + 1
print("{0}. {1}".format(pos, i))
# Output player 2's rolls and score for the user to see
print("\nPlayer 2 rolls ({0})".format(p2score))
for i in p2:
pos = p2.index(i) + 1
print("{0}. {1}".format(pos, i))
# Determine the winner
if p1score > p2score:
print("\nPlayer 1 ({0}) wins by {1} points!".format(p1score, p1score - p2score))
elif p2score > p1score:
print("\nPlayer 2 ({0}) wins by {1} points!".format(p2score, p2score - p1score))
else:
print("\nDraw!")

View file

@ -0,0 +1,33 @@
# read the text file
f = open('user.txt')
r = f.read()
# populate a dictionary with the data
users = {}
for i in r.split('\n'):
username = i.split(', ')[0]
password = i.split(', ')[1]
users[username] = password
# login function
def login(username, password):
if username in users.keys() and users[username] == password:
print('Yes!')
else:
print('No!')
# password validation
def validatePassword(password):
errors = []
password = str(password)
if len(password) < 8:
errors.append('Your password is not long enough! It must be a minimum of eight chracters.')
if any(i.islower() for i in password) == False:
errors.append('Your password does not include a lower case letter!')
if any(i.isupper() for i in password) == False:
errors.append('Your password does not include a upper case letter!')
print(errors)
validatePassword('hi')
validatePassword('ajsggfhgshjgGFSAFJGFG')
validatePassword('HELLO')

View file

@ -0,0 +1,3 @@
lSpratt45, goldfish
mTaylor2, p@ssword
eKelly31, l£tMe!n

View file

@ -0,0 +1,200 @@
import math, random, pygame, sys
# Game class
class Game():
def __init__(self):
self.score = 0
self.raspberryCount = 0
# Turret class
class Turret(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self) # extend the pygame Sprite class
self.image = pygame.image.load('turret.png')
self.rect = self.image.get_rect()
self.rect.x = 240
self.rect.y = 630
# Method that enables the turret to move
def move(self, direction):
if direction == 'left' and self.rect.x > 5:
self.rect.x -= 5
if direction == 'right' and self.rect.x < (480 - self.rect.width):
self.rect.x += 5
# Bullet class
class Bullet(pygame.sprite.Sprite):
def __init__(self, turret):
pygame.sprite.Sprite.__init__(self) # extend the pygame Sprite class
self.image = pygame.image.load('bullet.png')
self.rect = self.image.get_rect()
self.rect.x = turret.rect.x + (turret.rect.width / 2) - (self.rect.width / 2)
self.rect.y = turret.rect.y - turret.rect.height
# Method that moves bullets up the screen
def updatePosition(self):
if self.rect.y > 0 - self.rect.height: # ensures that the bullet is on the screen
self.rect.y -= 5
else:
self.kill() # remove the bullet when it goes off of the screen
# Fruit class
class Fruit(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
# Determine the type of fruit it will be
self.genus = random.randint(1, 3)
if self.genus == 1: imageFile = 'raspberry'
elif self.genus == 2: imageFile = 'strawberry'
elif self.genus == 3: imageFile = 'cherry'
self.image = pygame.image.load('{0}.png'.format(imageFile)) # load the type of fruit
self.image = pygame.transform.rotate(self.image, -15 + random.randint(0, 20)) # rotate the fruit
self.rect = self.image.get_rect()
self.rect.y = 0 - self.rect.height
self.rect.x = random.randint(2, 44) * 10
# Method that moves fruit down the screen
def updatePosition(self, game):
if self.rect.y < 640: # ensures that the fruit is on the screen
self.rect.y += 3
else:
if self.genus == 1: # if the fruit was a raspberry
game.score += 10 # add 10 points
game.raspberryCount += 1 # increase raspberry count
else: # otherwise
game.score -= 50 # remove 50 points
self.kill() # remove the fruit
# Method to update score and remove fruit when shot
def shot(self, game, bullet):
if self.genus == 1:
game.score -= 50
game.raspberryCount += 1
else:
game.score += 10
self.kill()
bullet.kill()
# Bullet timeout function
keyTimeout = {}
def keyPressed(keys, key, timeout):
if keys[key] == False:
return False
currentTime = pygame.time.get_ticks()
if key in keyTimeout and keyTimeout[key] > currentTime:
return False
keyTimeout[key] = currentTime + timeout
return True
# Initialise the game
pygame.init()
pygame.key.set_repeat(1, 20)
scoreFont = pygame.font.Font(None, 17) # set the score font
statusFont = pygame.font.Font(None, 17) # set the status font
black = (0, 0, 0) # rgb for black
screen = pygame.display.set_mode([480, 640]) # set the size of the window
pygame.display.set_caption('Raspberry Pie') # set the title of the window
# Create initial object instances
game = Game()
turret = Turret()
fruits = pygame.sprite.Group()
bullets = pygame.sprite.Group()
sprites = pygame.sprite.Group()
sprites.add(turret)
# Initialize game over flag and timer
endGame = False
clock = pygame.time.Clock()
tock = 0
# Game loop
while endGame == False:
clock.tick(30)
tock += 1
screen.fill(black)
# Process events
for event in pygame.event.get():
# Handle exiting
if event.type == pygame.QUIT:
sys.exit()
# Handle key presses
keys = pygame.key.get_pressed()
# If the key was the left arrow
if keys[pygame.K_LEFT]:
turret.move('left')
# If the key was the right arrow
if keys[pygame.K_RIGHT]:
turret.move('right')
# If the key was the space key
if keyPressed(keys, pygame.K_SPACE, 1000):
bullet = Bullet(turret)
bullets.add(bullet)
# If the key was the escape key
if keys[pygame.K_ESCAPE]:
sys.exit()
# Move objects
for bullet in bullets:
bullet.updatePosition()
for fruit in fruits:
fruit.updatePosition(game)
# Add new fruit if two seconds has elapsed
if tock > 60:
if len(fruits) < 10: # cap the amount of fruits to be less than 10
fruit = Fruit()
fruits.add(fruit)
tock = 0 # reset counter
# Check for collisions
collisions = pygame.sprite.groupcollide(fruits, bullets, False, True)
if collisions:
for fruit in collisions:
fruit.shot(game, collisions[fruit][0])
# Update player score
scoreText = scoreFont.render('Score: {0}'.format(str(game.score)), True, (255, 255, 255), (0, 0, 0))
screen.blit(scoreText, (0, 620)) # put the score onto the screen at 0, 620
statusText = statusFont.render('Raspberries: {0}'.format(str(10 - game.raspberryCount)), True, (255, 210, 210), (0, 0, 0))
screen.blit(statusText, (0, 10))
# Update the screen and check for game over
sprites.draw(screen)
bullets.draw(screen)
fruits.draw(screen)
pygame.display.flip()
if game.raspberryCount >= 10:
endGame = True
# Game over: display the player's final score
scoreBadge = pygame.image.load('scoreframe.png')
scoreBadge.convert_alpha()
screen.blit(scoreBadge, (90, 250))
scoreFont = pygame.font.Font(None, 52)
statusText = scoreFont.render('Your Score: {0}'.format(str(game.score)), True, (0, 0, 0), (231, 230, 33))
screen.blit(statusText, (105, 300))
pygame.display.flip()
# Wait for the player to close the game window
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()

View file

@ -0,0 +1,181 @@
import math, random, pygame, sys
# Game class
class Game():
def __init__(self):
self.score = 0
self.raspberryCount = 0
# Turret class
class Turret(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self) # extend the pygame Sprite class
self.image = pygame.image.load('turret.png')
self.rect = self.image.get_rect()
self.rect.x = 240
self.rect.y = 630
# Method that enables the turret to move
def move(self, direction):
if direction == 'left' and self.rect.x > 5:
self.rect.x -= 5
if direction == 'right' and self.rect.x < (480 - self.rect.width):
self.rect.x += 5
# Bullet class
class Bullet(pygame.sprite.Sprite):
def __init__(self, turret):
pygame.sprite.Sprite.__init__(self) # extend the pygame Sprite class
self.image = pygame.image.load('bullet.png')
self.rect = self.image.get_rect()
self.rect.x = turret.rect.x + (turret.rect.width / 2) - (self.rect.width / 2)
self.rect.y = turret.rect.y - turret.rect.height
# Method that moves bullets up the screen
def updatePosition(self):
if self.rect.y > 0 - self.rect.height: # ensures that the bullet is on the screen
self.rect.y -= 5
else:
self.kill() # remove the bullet when it goes off of the screen
# Fruit class
class Fruit(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
# Determine the type of fruit it will be
self.genus = random.randint(1, 3)
if self.genus == 1: imageFile = 'raspberry'
elif self.genus == 2: imageFile = 'strawberry'
elif self.genus == 3: imageFile = 'cherry'
self.image = pygame.image.load('{0}.png'.format(imageFile)) # load the type of fruit
self.image = pygame.transform.rotate(self.image, -15 + random.randint(0, 20)) # rotate the fruit
self.rect = self.image.get_rect()
self.rect.y = 0 - self.rect.height
self.rect.x = random.randint(2, 44) * 10
# Method that moves fruit down the screen
def updatePosition(self, game):
if self.rect.y < 640: # ensures that the fruit is on the screen
self.rect.y += 3
else:
if self.genus == 1: # if the fruit was a raspberry
game.score += 10 # add 10 points
game.raspberryCount += 1 # increase raspberry count
else: # otherwise
game.score -= 50 # remove 50 points
self.kill() # remove the fruit
# Method to update score and remove fruit when shot
def shot(self, game):
if self.genus == 1:
game.score -= 50
game.raspberryCount += 1
else:
game.score += 10
self.kill()
# Initialise the game
pygame.init()
pygame.key.set_repeat(1, 20)
scoreFont = pygame.font.Font(None, 17) # set the score font
statusFont = pygame.font.Font(None, 17) # set the status font
black = (0, 0, 0) # rgb for black
screen = pygame.display.set_mode([480, 640]) # set the size of the window
pygame.display.set_caption('Raspberry Pie') # set the title of the window
# Create initial object instances
game = Game()
turret = Turret()
fruits = pygame.sprite.Group()
bullets = pygame.sprite.Group()
sprites = pygame.sprite.Group()
sprites.add(turret)
# Initialize game over flag and timer
endGame = False
clock = pygame.time.Clock()
tock = 0
# Game loop
while endGame == False:
clock.tick(30)
tock += 1
screen.fill(black)
# Process events
for event in pygame.event.get():
# Handle exiting
if event.type == pygame.QUIT:
sys.exit()
# Handle key down
if event.type == pygame.KEYDOWN:
# If the key was the left arrow
if event.key == pygame.K_LEFT:
turret.move('left')
# If the key was the right arrow
if event.key == pygame.K_RIGHT:
turret.move('right')
# If the key was the space key
if event.key == pygame.K_SPACE:
bullet = Bullet(turret)
bullets.add(bullet)
# Move objects
for bullet in bullets:
bullet.updatePosition()
for fruit in fruits:
fruit.updatePosition(game)
# Add new fruit if two seconds has elapsed
if tock > 60:
if len(fruits) < 10: # cap the amount of fruits to be less than 10
fruit = Fruit()
fruits.add(fruit)
tock = 0 # reset counter
# Check for collisions
collisions = pygame.sprite.groupcollide(fruits, bullets, False, True)
if collisions:
for fruit in collisions:
fruit.shot(game)
# Update player score
scoreText = scoreFont.render('Score: {0}'.format(str(game.score)), True, (255, 255, 255), (0, 0, 0))
screen.blit(scoreText, (0, 620)) # put the score onto the screen at 0, 620
statusText = statusFont.render('Raspberries: {0}'.format(str(10 - game.raspberryCount)), True, (255, 210, 210), (0, 0, 0))
screen.blit(statusText, (0, 10))
# Update the screen and check for game over
sprites.draw(screen)
bullets.draw(screen)
fruits.draw(screen)
pygame.display.flip()
if game.raspberryCount >= 10:
endGame = True
# Game over: display the player's final score
scoreBadge = pygame.image.load('scoreframe.png')
scoreBadge.convert_alpha()
screen.blit(scoreBadge, (90, 250))
scoreFont = pygame.font.Font(None, 52)
statusText = scoreFont.render('Your Score: {0}'.format(str(game.score)), True, (0, 0, 0), (231, 230, 33))
screen.blit(statusText, (105, 300))
pygame.display.flip()
# Wait for the player to close the game window
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()

Binary file not shown.

After

Width:  |  Height:  |  Size: 292 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 333 B

View file

@ -0,0 +1,14 @@
word = input('Please enter a word!')
def isPallindrome(x):
reverse = ''
i = len(x)
while i > 0:
reverse += x[i - 1]
i = i - 1
return x == reverse
if isPallindrome(word):
print('{0} is a pallindrome!'.format(word))
else:
print('{0} is not a pallindrome!'.format(word))

View file

@ -0,0 +1,15 @@
word = input('Please enter a word!')
punctuations = '''!()-[]{};:'"\,<>./?@#$%^&*_~'''
nopunc = ''
for i in word:
if i not in punctuations:
nopunc = nopunc + i
def isPallindrome(x):
return x == x[::-1]
if isPallindrome(nopunc):
print('{0} is a pallindrome!'.format(word))
else:
print('{0} is not a pallindrome!'.format(word))

View file

@ -0,0 +1,9 @@
word = input('Please enter a word!')
def isPallindrome(x):
return x == x[::-1]
if isPallindrome(word):
print('{0} is a pallindrome!'.format(word))
else:
print('{0} is not a pallindrome!'.format(word))

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 799 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 827 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 834 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 832 KiB

View file

@ -0,0 +1,34 @@
<!DOCTYPE html>
<html lang="en">
<head>
<!-- CSS and Favicon -->
<link rel="stylesheet" type="text/css" href="stylesheet.css">
<!-- Metadata -->
<title>Ecofest</title>
</head>
<body>
<a href="index.html"><img src="./assets/img/arrow.png" alt="" class="back"></a>
<h1 class="title">Our Acts</h1>
<div class="acts">
<div class="act">
<img src="./assets/img/everyones-environment.jpg" alt="Everyone's Environment" />
<p>Everyone's Environment</p>
</div>
<div class="act">
<img src="./assets/img/solar-drum.jpg" alt="Solar Drum" />
<p>Solar Drum</p>
</div>
<div class="act">
<img src="./assets/img/green-gizmos.jpg" alt="Green Gizmos" />
<p>Green Gizmos</p>
</div>
<div class="act">
<img src="./assets/img/john-alfred.jpg" alt="DJ John Alfred" />
<p>DJ John Alfred</p>
</div>
</div>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 543 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 MiB

View file

@ -0,0 +1,18 @@
<!DOCTYPE html>
<html lang="en">
<head>
<!-- CSS and Favicon -->
<link rel="stylesheet" type="text/css" href="stylesheet.css">
<!-- Metadata -->
<title>Ecofest</title>
</head>
<body>
<h1 class="title home">Ecofest</h1>
<div class="content">
Ecofest is the environmentally-friendly music festival, taking place on the <strong>4-5th April, 2020</strong>.
Find out about our acts <a href="acts.html">here</a>, get your tickets <a href="">here</a>, learn about how we're helping the environment <a href="">here</a>, and contact us <a href="">here</a>.
</div>
</body>
</html>

View file

@ -0,0 +1,80 @@
/* Import "Bebas Neue" and "Open Sans" fonts from Google Fonts */
@import url('https://fonts.googleapis.com/css?family=Bebas+Neue|Open+Sans&display=swap');
/* Simple browser reset */
* {
margin: 0;
padding: 0;
}
html {
/* Make the background never repeat and be centered at all times */
background-image: url("./assets/img/bg.png");
background-position: center center;
background-repeat: no-repeat;
background-attachment: fixed;
background-size: cover;
/* Set a background colour to be displayed whilst the image is loading on slow connections */
background-color: #212121;
}
/* Base title styles */
.title {
color: #7ed957;
font-family: 'Bebas Neue', cursive;
font-size: 132px;
margin-top: 75px;
display: inline-block;
}
/* Home page specific styles for the title class */
.title.home {
margin-left: 1050px;
margin-top: 325px;
}
/* Styles for the green content box used on most pages */
.content {
background-color: #7ed957;
color: #212121;
font-family: 'Open Sans', sans-serif;
font-size: 24px;
padding: 20px;
margin-right: 50px;
}
/* Styling to make hyperlinks orange and bold */
a {
color: #FF5722;
font-weight: bold;
text-decoration: none;
}
/* Styling to underline hyperlinks when they are hovered over */
a:hover {
text-decoration: underline
}
/* Styling for the svg of the back button, displayed on all pages
exluding the home page */
.back {
height: 125px;
width: auto;
}
/* Styling that will get applied to both the back button and the title
on every page, except from the home page. */
.back && .title && :not(.home) {
display: inline-block;
}
/* Styling for the array of acts displayed on the acts page */
.acts {
}
/* Styling for each induvidual act within the acts array */
.act {
}

View file

@ -0,0 +1,82 @@
@import url('https://fonts.googleapis.com/css?family=Open+Sans|Playfair+Display&display=swap');
* {
margin: 0;
padding: 0;
}
html {
background-color: #000000;
color: #ffffff;
text-align: center;
}
h1, h2 { font-family: 'Playfair Display', serif; }
h1 {
font-size: 48px;
margin-bottom: 50px;
}
h2 {
font-size: 36px;
}
p {
font-family: 'Open Sans', sans-serif;
font-weight: light;
font-size: 18px;
}
nav {
list-style-type: none;
overflow: hidden;
margin-bottom: 50px;
}
nav li {
float: right;
font-size: 18px;
font-family: 'Open Sans', sans-serif;
margin-top: 18px;
}
nav a {
display: block;
color: white;
text-align: center;
text-decoration: none;
padding: 14px 16px;
}
nav :not(.left) a:hover {
background-color: #ffffff;
color: #000000;
}
nav li.left {
float: left;
font-size: 36px;
font-family: 'Playfair Display', serif;
margin-top: 0px;
}
div.images { margin-top: 75px; }
div.images img {
height: 250px;
width: 250px;
margin-right: 40px;
}
a {
color: white;
text-decoration: none;
font-family: 'Open Sans', sans-serif;
font-size: 24px;
}
a:hover {
background-color: #ffffff;
color: #000000;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 474 KiB

View file

@ -0,0 +1,41 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Pet Planet</title>
<link type="text/css" rel="stylesheet" href="./assets/css/index.css">
<link rel="icon" href="./assets/favicon.ico">
<style type="text/css">
p {
margin: 20px 200px 75px;
}
</style>
<meta charset="UTF-8" />
<meta name="description" content="Pet Planet is a family-run pet shop located in Ashford Highstreet." />
<meta name="keywords" content="pets,dogs,cats,shop,ashford,highstreet" />
<meta name="author" content="Jacob Smith" />
<meta name="viewport" content="width=device.width, initial-scale=1.0" />
<meta property="og:title" content="Pet Planet" />
<meta property="og:description" content="Pet Planet is a family-run pet shop located in Ashford Highstreet." />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://pet-planet.netlify.com/" />
<meta property="og:image" content="https://pet-planet.netlify.com/assets/ogp.jpg" />
</head>
<body>
<nav>
<li class="left"><a href="index.html">Pet Planet</a></li>
<li><a href="care.html">Care</a></li>
<li><a href="products.html">Products</a></li>
<li><a href="index.html">Home</a></li>
</nav>
<h1>Caring for your pets</h1>
<h2>Cats</h2>
<p>Some essential things you must do to care for your cat include things like getting them micro-chipped, neutering them, getting them a vet plan, keeping their vaccinations up to date, getting pet insurance, and providing plenty of playtime.</p>
<h2>Dogs</h2>
<p>Some essential things you must do to care for your dog includes things like providing a clean living environment for uour dog, keeping fresh water available, giving them a quality diet, having them examined by a vet on a regular basis, provide ample opportunites to exrcise, and training them to follow simple commands.</p>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 KiB

View file

@ -0,0 +1,43 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Pet Planet</title>
<link type="text/css" rel="stylesheet" href="./assets/css/index.css">
<link rel="icon" href="./assets/favicon.ico">
<style type="text/css">
.check-us-out {
margin-top: 50px;
margin-bottom: 25px;
}
</style>
<meta charset="UTF-8" />
<meta name="description" content="Pet Planet is a family-run pet shop located in Ashford Highstreet." />
<meta name="keywords" content="pets,dogs,cats,shop,ashford,highstreet" />
<meta name="author" content="Jacob Smith" />
<meta name="viewport" content="width=device.width, initial-scale=1.0" />
<meta property="og:title" content="Pet Planet" />
<meta property="og:description" content="Pet Planet is a family-run pet shop located in Ashford Highstreet." />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://pet-planet.netlify.com/" />
<meta property="og:image" content="https://pet-planet.netlify.com/assets/ogp.jpg" />
</head>
<body>
<nav>
<li class="left"><a href="index.html">Pet Planet</a></li>
<li><a href="care.html">Care</a></li>
<li><a href="products.html">Products</a></li>
<li><a href="index.html">Home</a></li>
</nav>
<h1>Welcome to Pet Planet</h1>
<p>We are a family-run pet shop located in Ashford Highstreet.</p>
<h1 class="check-us-out">Check us out</h1>
<iframe width='250px' height='250px' id='mapcanvas' src='https://maps.google.com/maps?q=High%20Street,%20Ashford&amp;t=&amp;z=10&amp;ie=UTF8&amp;iwloc=&amp;output=embed' frameborder='0' scrolling='no' marginheight='0' marginwidth='0'><div class="zxos8_gm"><a href="https://www.giantbomb.com/profile/mobilephones/blog/">here</a></div><div style='overflow:hidden;'><div id='gmap_canvas' style='height:100%;width:100%;'></div></div></iframe>
<br><br><br>
<a href="mailto:insertemail@here.xyz" class="contact-us">Contact us.</a>
</body>
</html>

View file

@ -0,0 +1,37 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Pet Planet</title>
<link type="text/css" rel="stylesheet" href="./assets/css/index.css">
<link rel="icon" href="./assets/favicon.ico">
<meta charset="UTF-8" />
<meta name="description" content="Pet Planet is a family-run pet shop located in Ashford Highstreet." />
<meta name="keywords" content="pets,dogs,cats,shop,ashford,highstreet" />
<meta name="author" content="Jacob Smith" />
<meta name="viewport" content="width=device.width, initial-scale=1.0" />
<meta property="og:title" content="Pet Planet" />
<meta property="og:description" content="Pet Planet is a family-run pet shop located in Ashford Highstreet." />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://pet-planet.netlify.com/" />
<meta property="og:image" content="https://pet-planet.netlify.com/assets/ogp.jpg" />
</head>
<body>
<nav>
<li class="left"><a href="index.html">Pet Planet</a></li>
<li><a href="care.html">Care</a></li>
<li><a href="products.html">Products</a></li>
<li><a href="index.html">Home</a></li>
</nav>
<h1>Products</h1>
<p>We stock many high quality products in our store.<br>Check them out here.</p>
<div class="images">
<img src="./assets/img/pedigree_dogfood.jpg" alt="Pedigree Dogfood">
<img src="./assets/img/splaker_leash.jpg" alt="Splaker Dog Leash">
<img src="./assets/img/mouse_toy.jpg" alt="Mouse Toy">
</div>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 589 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 299 KiB

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 359 KiB

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 KiB

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 257 KiB

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 KiB

File diff suppressed because it is too large Load diff

Binary file not shown.

View file

@ -0,0 +1,18 @@
counter = 26
ciphertext = input('Please input some ciphertext to decrypt.')
ciphertext = ciphertext.upper()
while counter >= 0:
outputWord = ''
for i in ciphertext:
asc = ord(i)
shiftChr = asc + counter
if shiftChr >= 90:
shiftChr = (shiftChr-90)+64
outputWord = outputWord + chr(shiftChr)
print(outputWord)
counter = counter - 1

View file

@ -0,0 +1,12 @@
output = ''
asc = 0
msg = input('Please input the text.')
key = input('How many characters would you like to shift that text by?')
for i in msg:
asc = ord(i)
shiftChr = asc + int(key)
output = output + chr(shiftChr)
print(output)

View file

@ -0,0 +1,65 @@
import math
import string
import re
def encryptChar(char, key):
# check if the character is a letter
if re.match('^[a-zA-Z]*$', char):
# figure out the position of the character in the alphabet
position = string.ascii_lowercase.index(char.lower()) + 1
# encrypt the character
return math.ceil((position ** 2) + int(key))
# if the character is not a letter, just return it
else:
return char
def encrypt(text, key):
# split the string into a list of characters and replace spaces with ||
characters = [w.replace(' ', '||') for w in [char for char in text]]
# encrypt the message and return it
return ' '.join(map(str, [encryptChar(x, key) for x in characters]))
def decryptChar(char, key):
# check if the character is a number
if re.match('^[0-9]*$', char):
# create a dictionary with all of the lower case letters
d = dict(enumerate(string.ascii_lowercase, 1))
# return the letter in the index of the resulting number
return d[math.sqrt(int(char) - int(key))]
# return || as a space
if char == '||':
return ' '
# if the character is not a number or ||, just return it
else: return char
def decrypt(text, key):
# split the string into a list
characters = text.split()
# decrypt the message and return it
return ''.join([decryptChar(x, key) for x in characters])
def menu():
inp = input('Welcome to Enkodo!\nWhat would you like to do?\n\n1) Encrypt a message\n2) Decrypt a code\n3) Exit\nYour choice: ')
if inp == '1':
msg = input('\nPlease input the message you would like to encrypt:\n')
key = input('\nPlease provide a key to encrypt that with.\n')
encrypted = encrypt(msg, key)
print('\nYour message has been successfully encrypted. Here it is!\n')
print(encrypted)
exit()
if inp == '2':
code = input('\nPlease input the code you would like to decrypt:\n')
key = input('\nWhat was the key the code was encrypted with?\n')
decrypted = decrypt(code, key)
print('\nYour message has been successfully decrypted. Here it is!\n')
print(decrypted)
exit()
if inp == '3':
print('\nGoodbye!')
exit()
menu()

View file

@ -0,0 +1,2 @@
age = input('What is your age?')
print('Your age is ' + age)

View file

@ -0,0 +1,24 @@
import random
# 0: rock
# 1: paper
# 2: scissors
rps = ['rock', 'paper', 'scissors']
cpu = random.randint(0, 2)
user = str.lower(input('Rock, paper, or scissors?'))
user = rps.index(user)
print('Computer: ', rps[cpu])
print('User: ', rps[user])
# if it is a tie
if ((cpu == 0) & (user == 0)) | ((cpu == 1) & (user == 1)) | ((cpu == 2) & (user == 2)):
print('It was a tie!')
exit()
# if the computer wins
elif ((cpu == 1) & (user == 0)) | ((cpu == 0) & (user == 2)) | ((cpu == 2) & (user == 1)):
print('Computer wins!')
else:
print('User wins!')

View file

@ -0,0 +1,7 @@
sentence = input('Please input a sentence.')
charCount = 0
for i in sentence:
charCount = charCount + 1
print(charCount)

View file

@ -0,0 +1 @@
print(str.upper(input('Please input a sentence.')))

View file

@ -0,0 +1,5 @@
sentence = str(input('Please input a sentence.'))
wordToReplace = str(input('Please input a word to replace.'))
replaceWith = str(input('Please input a word to replace it with.'))
print(sentence.replace(wordToReplace, replaceWith))

View file

@ -0,0 +1,9 @@
sentence = str(input('Please input a sentence.'))
words = sentence.split()
theCount = 0
for word in words:
if str.lower(word) == 'the':
theCount = theCount + 1
print('"The" appears ', theCount, " times.")

Some files were not shown because too many files have changed in this diff Show more