inital commit. about to start file IO.
This commit is contained in:
commit
054879c11d
139
.gitignore
vendored
Normal file
139
.gitignore
vendored
Normal file
|
@ -0,0 +1,139 @@
|
|||
### Python ###
|
||||
# Byte-compiled / optimized / DLL files
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
|
||||
# C extensions
|
||||
*.so
|
||||
|
||||
# Distribution / packaging
|
||||
.Python
|
||||
build/
|
||||
develop-eggs/
|
||||
dist/
|
||||
downloads/
|
||||
eggs/
|
||||
.eggs/
|
||||
lib/
|
||||
lib64/
|
||||
parts/
|
||||
sdist/
|
||||
var/
|
||||
wheels/
|
||||
pip-wheel-metadata/
|
||||
share/python-wheels/
|
||||
*.egg-info/
|
||||
.installed.cfg
|
||||
*.egg
|
||||
MANIFEST
|
||||
|
||||
# PyInstaller
|
||||
# Usually these files are written by a python script from a template
|
||||
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
||||
*.manifest
|
||||
*.spec
|
||||
|
||||
# Installer logs
|
||||
pip-log.txt
|
||||
pip-delete-this-directory.txt
|
||||
|
||||
# Unit test / coverage reports
|
||||
htmlcov/
|
||||
.tox/
|
||||
.nox/
|
||||
.coverage
|
||||
.coverage.*
|
||||
.cache
|
||||
nosetests.xml
|
||||
coverage.xml
|
||||
*.cover
|
||||
*.py,cover
|
||||
.hypothesis/
|
||||
.pytest_cache/
|
||||
pytestdebug.log
|
||||
|
||||
# Translations
|
||||
*.mo
|
||||
*.pot
|
||||
|
||||
# Django stuff:
|
||||
*.log
|
||||
local_settings.py
|
||||
db.sqlite3
|
||||
db.sqlite3-journal
|
||||
|
||||
# Flask stuff:
|
||||
instance/
|
||||
.webassets-cache
|
||||
|
||||
# Scrapy stuff:
|
||||
.scrapy
|
||||
|
||||
# Sphinx documentation
|
||||
docs/_build/
|
||||
doc/_build/
|
||||
|
||||
# PyBuilder
|
||||
target/
|
||||
|
||||
# Jupyter Notebook
|
||||
.ipynb_checkpoints
|
||||
|
||||
# IPython
|
||||
profile_default/
|
||||
ipython_config.py
|
||||
|
||||
# pyenv
|
||||
.python-version
|
||||
|
||||
# pipenv
|
||||
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
||||
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
||||
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
||||
# install all needed dependencies.
|
||||
#Pipfile.lock
|
||||
|
||||
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
|
||||
__pypackages__/
|
||||
|
||||
# Celery stuff
|
||||
celerybeat-schedule
|
||||
celerybeat.pid
|
||||
|
||||
# SageMath parsed files
|
||||
*.sage.py
|
||||
|
||||
# Environments
|
||||
.env
|
||||
.venv
|
||||
env/
|
||||
venv/
|
||||
ENV/
|
||||
env.bak/
|
||||
venv.bak/
|
||||
pythonenv*
|
||||
|
||||
# Spyder project settings
|
||||
.spyderproject
|
||||
.spyproject
|
||||
|
||||
# Rope project settings
|
||||
.ropeproject
|
||||
|
||||
# mkdocs documentation
|
||||
/site
|
||||
|
||||
# mypy
|
||||
.mypy_cache/
|
||||
.dmypy.json
|
||||
dmypy.json
|
||||
|
||||
# Pyre type checker
|
||||
.pyre/
|
||||
|
||||
# pytype static type analyzer
|
||||
.pytype/
|
||||
|
||||
# profiling data
|
||||
.prof
|
16
collatz/collatz.py
Executable file
16
collatz/collatz.py
Executable file
|
@ -0,0 +1,16 @@
|
|||
|
||||
def nextInSequence(number):
|
||||
if isinstance(number, int):
|
||||
if number % 2 == 0:
|
||||
return number // 2
|
||||
else:
|
||||
return 3*number+1
|
||||
else:
|
||||
raise TypeError('input must be int!')
|
||||
|
||||
def seqenceLength(number):
|
||||
length = 0
|
||||
while number != 1:
|
||||
number = nextInSequence(number)
|
||||
length += 1
|
||||
return length
|
24
collatz/collatzSearch.py
Executable file
24
collatz/collatzSearch.py
Executable file
|
@ -0,0 +1,24 @@
|
|||
#! /usr/bin/env python3
|
||||
|
||||
import sys
|
||||
import collatz
|
||||
|
||||
usage='usage: collatzSearch [digits] outputs the lenght of the collatz sequence for every number less than 10^digits'
|
||||
|
||||
if len(sys.argv)<2:
|
||||
print(usage)
|
||||
sys.exit()
|
||||
digits = sys.argv[1]
|
||||
|
||||
try:
|
||||
digits = int(digits)
|
||||
except:
|
||||
print(usage)
|
||||
sys.exit()
|
||||
|
||||
nextNumber = 1
|
||||
maxNumber = 10**digits
|
||||
|
||||
while nextNumber<maxNumber:
|
||||
print('collatz length of '+str(nextNumber)+' is: \n'+str(collatz.seqenceLength(nextNumber)))
|
||||
nextNumber += 1
|
21
collatz/collatzSequence.py
Executable file
21
collatz/collatzSequence.py
Executable file
|
@ -0,0 +1,21 @@
|
|||
#! /usr/bin/env python3
|
||||
|
||||
import sys
|
||||
import collatz
|
||||
|
||||
usage='usage: collatzSequence [number] prints the collatz sequence for the given number'
|
||||
|
||||
if len(sys.argv)<2:
|
||||
Print(usage)
|
||||
sys.exit()
|
||||
number = sys.argv[1]
|
||||
|
||||
try:
|
||||
number = int(number)
|
||||
except:
|
||||
print(usage)
|
||||
sys.exit()
|
||||
|
||||
while number != 1:
|
||||
number = collatz.nextInSequence(number)
|
||||
print(number)
|
70
conway.py
Executable file
70
conway.py
Executable file
|
@ -0,0 +1,70 @@
|
|||
#! /usr/bin/env python3
|
||||
|
||||
#conways game of life
|
||||
import time, random, copy
|
||||
|
||||
width = 100
|
||||
hight = 50
|
||||
nextCells = []
|
||||
currentCells = []
|
||||
|
||||
def createInitalBoard(): #create inital board
|
||||
for x in range(width):
|
||||
column = [] #add a column
|
||||
for y in range(hight):
|
||||
if random.randint(0, 1) == 0:
|
||||
column.append('#') #add a living cell
|
||||
else:
|
||||
column.append(' ') #add a dead cell
|
||||
nextCells.append(column) #append the newly created random column
|
||||
def printBoard():
|
||||
for y in range(hight):
|
||||
for x in range(width):
|
||||
print(nextCells[x][y], end='')
|
||||
print()#print a newline at the end of the row.
|
||||
print('\n\n\n\n\n') #seperate each step with newlines
|
||||
|
||||
def updateBoard():
|
||||
currentCells = copy.deepcopy(nextCells) #create a buffer of the grid to work on.
|
||||
for x in range(width):
|
||||
for y in range(hight):
|
||||
#get neighboring cordinates
|
||||
#% width makes the board wrap.
|
||||
leftCoord = (x-1)%width
|
||||
rightCoord = (x+1)%width
|
||||
aboveCoord = (y-1)%hight
|
||||
belowCoord = (y+1)%hight
|
||||
|
||||
numNeighbors = 0
|
||||
#count the number of living neighbors
|
||||
if currentCells[leftCoord][aboveCoord] == '#':
|
||||
numNeighbors +=1 #top left
|
||||
if currentCells[x][aboveCoord] == '#':
|
||||
numNeighbors +=1 #top
|
||||
if currentCells[rightCoord][aboveCoord] == '#':
|
||||
numNeighbors +=1 #top right
|
||||
if currentCells[leftCoord][y] == '#':
|
||||
numNeighbors +=1 #left
|
||||
if currentCells[rightCoord][y] == '#':
|
||||
numNeighbors +=1 #right
|
||||
if currentCells[leftCoord][belowCoord] == '#':
|
||||
numNeighbors +=1 #bottom left
|
||||
if currentCells[x][belowCoord] == '#':
|
||||
numNeighbors +=1 #bottom
|
||||
if currentCells[rightCoord][belowCoord] == '#':
|
||||
numNeighbors +=1 #bottom right
|
||||
|
||||
#set cell state based on conways rules
|
||||
if currentCells[x][y] == '#' and (numNeighbors == 2 or numNeighbors == 3):
|
||||
nextCells[x][y] = '#'
|
||||
elif currentCells[x][y] == ' ' and numNeighbors == 3:
|
||||
nextCells[x][y] = '#'
|
||||
else:
|
||||
nextCells[x][y] = ' '
|
||||
|
||||
createInitalBoard()
|
||||
|
||||
while True: #main loop
|
||||
printBoard()
|
||||
updateBoard()
|
||||
time.sleep(.1)
|
7
function.py
Executable file
7
function.py
Executable file
|
@ -0,0 +1,7 @@
|
|||
#! /usr/bin/env python3
|
||||
|
||||
def hello(name):
|
||||
print('hello, '+name)
|
||||
|
||||
hello('alice')
|
||||
hello('bob')
|
7
import.py
Executable file
7
import.py
Executable file
|
@ -0,0 +1,7 @@
|
|||
#! /usr/bin/env python3
|
||||
|
||||
import random,sys
|
||||
|
||||
for i in range(100):
|
||||
print(random.randint(1,10))
|
||||
sys.exit()
|
22
inventory.py
Executable file
22
inventory.py
Executable file
|
@ -0,0 +1,22 @@
|
|||
#! /usr/bin/env python3
|
||||
|
||||
def displayInventory(inventory):
|
||||
print("Inventory:")
|
||||
output = ""
|
||||
item_total = 0
|
||||
for k,v in inventory.items():
|
||||
output += str(v)+" "+k+"\n"
|
||||
item_total+= v
|
||||
output += "Total number of items: "+str(item_total)
|
||||
return output
|
||||
|
||||
def addToInventory(inventory, addedItems): #modifies in place!
|
||||
for i in addedItems:
|
||||
inventory.setdefault(i, 0)
|
||||
inventory[i] += 1
|
||||
|
||||
inventory = {'rope': 1, 'torch': 6, 'gold coin': 42, 'dagger': 1, 'arrow': 12}
|
||||
dragonLoot = ['gold coin', 'dagger', 'gold coin', 'gold coin', 'ruby']
|
||||
print(displayInventory(inventory))
|
||||
addToInventory(inventory, dragonLoot)
|
||||
print(displayInventory(inventory))
|
18
magic_8.py
Executable file
18
magic_8.py
Executable file
|
@ -0,0 +1,18 @@
|
|||
#! /usr/bin/env python3
|
||||
|
||||
import random
|
||||
|
||||
def getAwnser():
|
||||
r = random.randint(0, 8)
|
||||
messages = ['It is certain',
|
||||
'It is decidedly so',
|
||||
'Yes',
|
||||
'Reply hazy, try again',
|
||||
'Ask again later',
|
||||
'My reply is no',
|
||||
'Outlook not so good',
|
||||
'Very doubtful' ]
|
||||
return messages[r]
|
||||
|
||||
for i in range(0,10):
|
||||
print(getAwnser())
|
17
magic_8_v2.py
Executable file
17
magic_8_v2.py
Executable file
|
@ -0,0 +1,17 @@
|
|||
#! /usr/bin/env python3
|
||||
|
||||
import random
|
||||
|
||||
def getAwnser():
|
||||
messages = ('It is certain',
|
||||
'It is decidedly so',
|
||||
'Yes',
|
||||
'Reply hazy, try again',
|
||||
'Ask again later',
|
||||
'My reply is no',
|
||||
'Outlook not so good',
|
||||
'Very doubtful' )
|
||||
return messages[random.randint(0, len(messages)-1)]
|
||||
|
||||
for i in range(0,10):
|
||||
print(getAwnser())
|
22
number_guess.py
Executable file
22
number_guess.py
Executable file
|
@ -0,0 +1,22 @@
|
|||
#! /usr/bin/env python3
|
||||
|
||||
#guess the number game
|
||||
import random
|
||||
secretNumber = random.randint(1,100)
|
||||
print('I am thinking of a number between 1 and 100.')
|
||||
|
||||
#ask the player to guess 10 times.
|
||||
for guessesTaken in range(1,10):
|
||||
print('take a guess')
|
||||
guess = int(input())
|
||||
|
||||
if guess < secretNumber:
|
||||
print('your guess is too low.')
|
||||
elif guess > secretNumber:
|
||||
print('your guess is too high.')
|
||||
else:
|
||||
break
|
||||
if guess == secretNumber:
|
||||
print('you guessed correctly! it only took you '+str(guessesTaken)+' guesses!')
|
||||
else:
|
||||
print('you were not able to guess in 10 guesses. the number I was thinking of was '+str(secretNumber))
|
9
password.py
Executable file
9
password.py
Executable file
|
@ -0,0 +1,9 @@
|
|||
#! /usr/bin/env python3
|
||||
name = 'mary'
|
||||
password = 'swordfish'
|
||||
if name == 'mary':
|
||||
print('hello mary')
|
||||
if password == 'swordfish':
|
||||
print('acess granted')
|
||||
else:
|
||||
print('Wrong Password')
|
61
pigLatin.py
Executable file
61
pigLatin.py
Executable file
|
@ -0,0 +1,61 @@
|
|||
#! /usr/bin/env python3
|
||||
import sys
|
||||
|
||||
if len(sys.argv)<2:
|
||||
print('usage: piglatin [text] -translate text to piglatin')
|
||||
sys.exit()
|
||||
|
||||
message = sys.argv[1]
|
||||
def translateToPigLatin(message):
|
||||
vowels=('a', 'e', 'i', 'o', 'u', 'y')
|
||||
|
||||
piglatin=[] #list of the words
|
||||
for word in message.split():
|
||||
#seperate the non-letters at the start of the word
|
||||
prefixNonLetters = ''
|
||||
while len(word) > 0 and not word[0].isalpha():
|
||||
prefixNonLetters += word[0]
|
||||
word = word[1:]
|
||||
|
||||
if len (word) == 0:
|
||||
piglatin.append(prefixNonLetters)
|
||||
continue
|
||||
|
||||
suffixNonLetters = ''
|
||||
while len(word)>0 and not word[-1].isalpha():
|
||||
suffixNonLetters = word[-1]+suffixNonLetters
|
||||
word = word[:-1]
|
||||
|
||||
#remember if word was in uppercase or title case.
|
||||
wasUpper = word.isupper()
|
||||
wasTitle = word.istitle()
|
||||
|
||||
#make word lowercase for translation.
|
||||
word = word.lower()
|
||||
|
||||
#seperate the consanants at the end of the word.
|
||||
prefixConsonants = ''
|
||||
while len(word) > 0 and not word[0] in vowels:
|
||||
prefixConsonants += word[0]
|
||||
word = word[1:]
|
||||
|
||||
#add pig latin ending
|
||||
|
||||
if prefixConsonants == '':
|
||||
word += 'yay'
|
||||
else:
|
||||
word += prefixConsonants+'ay'
|
||||
|
||||
#set the word back to upercase or titlecase.
|
||||
if wasUpper:
|
||||
word=word.upper()
|
||||
if wasTitle:
|
||||
word = word.title()
|
||||
|
||||
#add non letters back.
|
||||
piglatin.append(prefixNonLetters + word + suffixNonLetters)
|
||||
|
||||
#join all the words back into a string.
|
||||
return' '.join(piglatin)
|
||||
print(translateToPigLatin(message)
|
||||
|
68
rock_paper_scissors.py
Executable file
68
rock_paper_scissors.py
Executable file
|
@ -0,0 +1,68 @@
|
|||
#! /usr/bin/env python3
|
||||
|
||||
import random, sys
|
||||
|
||||
print('ROCK, PAPER, SCISSORS')
|
||||
|
||||
#variables to keep track of wins, losses, ties.
|
||||
wins =0
|
||||
losses = 0
|
||||
ties = 0
|
||||
|
||||
while True: #main game loop.
|
||||
print('%s Wins, %s Losses, %s Ties' %(wins, losses, ties))
|
||||
while True: #input loop
|
||||
print('Enter your move: (r)ock, (p)aper, (s)cissors, or (q)uit')
|
||||
playerMove = input()
|
||||
if playerMove == 'q':
|
||||
sys.exit() #exit program
|
||||
elif playerMove == 'r' or playerMove == 'p' or playerMove == 's':
|
||||
break #get out of input loop.
|
||||
else:
|
||||
print('type of of r, p, s, or q.')
|
||||
|
||||
#display player choice.
|
||||
if playerMove == 'r':
|
||||
print('ROCK vs ...')
|
||||
elif playerMove == 'p':
|
||||
print('PAPER vs ...')
|
||||
elif playerMove == 's':
|
||||
print('SCISSORS vs ...')
|
||||
|
||||
#determine computer move and display it.
|
||||
randomNumber = random.randint(1,3)
|
||||
if randomNumber == 1:
|
||||
computerMove = 'r'
|
||||
print('ROCK')
|
||||
if randomNumber == 2:
|
||||
computerMove = 'p'
|
||||
print('PAPER')
|
||||
if randomNumber == 3:
|
||||
computerMove = 's'
|
||||
print('SCISSORS')
|
||||
|
||||
#determine and display results.
|
||||
if playerMove == computerMove:
|
||||
print('Its a Tie!')
|
||||
ties += 1
|
||||
elif playerMove == 'r':
|
||||
if computerMove == 's':
|
||||
print('You Win!')
|
||||
wins += 1
|
||||
else:
|
||||
print('You Loose!')
|
||||
losses += 1
|
||||
elif playerMove == 'p':
|
||||
if computerMove == 'r':
|
||||
print('You Win!')
|
||||
wins +=1
|
||||
else:
|
||||
print('You Loose!')
|
||||
losses += 1
|
||||
elif playerMove == 's':
|
||||
if computerMove == 'p':
|
||||
print('You Win!')
|
||||
wins +=1
|
||||
else:
|
||||
print('You Loose!')
|
||||
losses +=1
|
5
spam.py
Executable file
5
spam.py
Executable file
|
@ -0,0 +1,5 @@
|
|||
#! /usr/bin/env python3
|
||||
spam = 0
|
||||
while spam <5:
|
||||
print('spam'+str(spam))
|
||||
spam = spam+1
|
29
strongPassword.py
Executable file
29
strongPassword.py
Executable file
|
@ -0,0 +1,29 @@
|
|||
#! /usr/bin/env python3
|
||||
|
||||
import re, sys
|
||||
|
||||
if len(sys.argv)<2:
|
||||
print('usage: strongPassword [password] tests whether the password is at least 8 characters, contains both upper and lowercase, and has at least one digit/symbol, OR consists of at least 3 words of 4 letters each, containing both upper and lower case.')
|
||||
sys.exit()
|
||||
|
||||
def checkShortPassword(password):
|
||||
if len(password)<8:
|
||||
return false
|
||||
hasLower = re.search('[a-z]', password)
|
||||
hasCaps = re.search('[A-Z]', password)
|
||||
hasDigitOrSymbol = re.search('[\d]|[\W_\s]', password)
|
||||
#
|
||||
return hasLower and hasCaps and hasDigitOrSymbol
|
||||
|
||||
def checkLongPassword(password):
|
||||
has3Words = re.match('\s*\S+(?:\s+\S+){3,}', password)
|
||||
hasLower = re.search('[a-z]', password)
|
||||
hasCaps = re.search('[A-Z]', password)
|
||||
return has3Words and hasLower and hasCaps
|
||||
|
||||
password = sys.argv[1]
|
||||
|
||||
if checkLongPassword(password) or checkShortPassword(password):
|
||||
print('password is strong')
|
||||
else:
|
||||
print('password is weak!')
|
6
your_name.py
Executable file
6
your_name.py
Executable file
|
@ -0,0 +1,6 @@
|
|||
#! /usr/bin/env python3
|
||||
name =''
|
||||
while name != 'your name':
|
||||
print('please type your name')
|
||||
name = input()
|
||||
print('thank you!')
|
20
zigzag.py
Executable file
20
zigzag.py
Executable file
|
@ -0,0 +1,20 @@
|
|||
#! /usr/bin/env python3
|
||||
|
||||
import time, sys
|
||||
|
||||
maxIndent = 100 #how many spaces the zigzag should move
|
||||
linewidth = 5 #width of line
|
||||
linechar = '*'
|
||||
indent = 0
|
||||
indentIncreasing = 1
|
||||
|
||||
try:
|
||||
while True:
|
||||
print((' '*indent)+(linechar*linewidth)) #form the string for the current line
|
||||
indent += indentIncreasing
|
||||
if indent > maxIndent or indent <= 0:
|
||||
indentIncreasing *= -1 # change direction
|
||||
time.sleep(0.01)
|
||||
|
||||
except KeyboardInterrupt:
|
||||
sys.exit()
|
Loading…
Reference in a new issue