|
Looping Numbers |
| sumFromZeroToN |
def sumFromZeroToN(n):
if n < 0:
return 0
answer = 0
for i in range(1,n+1):
answer += i
return answer
# or you can use a mathematical formula (but don't) |
| sumAtoB |
def sumAtoB(a,b):
if a > b:
return 0
answer = 0
for i in range(a,b+1):
answer += i
return answer |
| fiveSumFromZeroToN |
def fiveSumFromZeroToN(n):
if n < 0:
return 0
answer = 0
for i in range(5,n+1,5):
answer += i
return answer |
| specialSumInclusive |
def specialSumInclusive(n):
answer = 0
for q in range(1,n+1):
if q%3 == 0 or q%5 == 0:
answer += q
return answer |
| specialSumExclusive |
def specialSumExclusive(n):
answer = 0
for i in range(n+1):
if i%5 == 0 and i%7==0:
answer += i
return answer |
| sumOfFirstNSquares |
def sumOfFirstNSquares(n):
answer = 0
for i in range(n+1):
answer += i*i
return answer |
| sumSquaresBetween |
# Straightforward way:
def sumSquaresBetween(a,b):
answer = 0
for i in range(a,b+1):
if isPerfectSquare(i):
answer += i
return answer
def isPerfectSquare(n):
return int(n**.5) == n**.5
# -----------------------
# or a faster way:
def sumSquaresBetween(a,b):
answer = 0
i = int(a**.5) # may be too small
while True:
sq = i*i
if a <= sq <= b:
answer += sq
if sq > b:
break
i+=1
return answer |
| sumOfPowers |
# Straightforward way:
def sumOfPowers(n):
answer = 0
for x in range(2,n+1):
a = x
# test if a is a power of 2
while a > 1:
a = a / 2.0
if a == 1:
answer += x
return answers
# ------------------------
# or a faster way:
def sumOfPowers(n):
answer = 0
if n < 2:
return 0
exp = 1
while True:
power2 = 2 ** exp
if power2 <= n:
answer += power2
else:
break
exp += 1
return answer |
| Looping over digits |
| sumDigits |
def sumDigits(n):
n = abs(n)
answer = 0
while n > 0:
answer += n%10 #add in the ones digit
n //= 10
return answer
# ---------------------
# or, using the string representation
of n
def sumDigits(n):
n = abs(n)
answer = 0
for c in str(n):
answer += int(c)
return answer |
| countDigits |
def countDigits(n):
c = abs(n)
return len(str(c)) |
| countOddDigits |
def countOddDigits(n):
n = abs(n)
answer = 0
for c in str(n):
if int(c)%2 == 1:
answer += 1
return answer |
| countPrimeDigits |
def countPrimeDigits(n):
answer = 0
s = str(abs(n))
for c in s:
if c in '2357':
answer += 1
return answer |
| Strings and Loops |
| countLetter |
def
countLetter(string,letter):
answer = 0
for c in string:
if c == letter:
answer += 1
return answer |
| findLetter |
def
findLetter(original,letter):
for i in range(len(original)):
if original[i] == letter:
return i
return -1 |
| findWord |
def
findWord(original,word):
q = len(word)
for i in range(len(original)):
if original[i:i+q] == word:
return i
return -1 |
| countWord |
def
countWord(original,word):
if word not in original:
return 0
q = len(word)
answer = 0
for i in range(len(original)):
if original[i:i+q] == word:
answer += 1
return answer |
| isVowel |
# re-use findLetter()
from above
def isVowel(s):
return len(s)==1 and
findLetter('aeiouAEIOU',s) != -1 |
| countVowels |
# re-use isVowel()
from above
def countVowels(s):
answer = 0
for c in s:
if isVowel(c):
answer += 1
return answer |
| noVowels |
# re-use isVowel()
from above
def noVowels(s):
answer = ''
for c in s:
if not isVowel(c):
answer += c
return answer |
| isConsonant |
# re-use isVowel()
from above
def isConsonant(c):
return len(c) == 1 and isAlpha(c) and
not isVowel(c)
def isAlpha(c):
return ('a' <= c <= 'z') or ('A' <= c
<= 'Z') |