List-2 problems
def count_evens(nums):
"""Geeft terug hoeveel even getallen er in nums staan."""
result = 0
for num in nums:
if num % 2 == 0:
result += 1
return result
assert count_evens([2,1,2,3,4]) == 3
assert count_evens([2,2,0]) == 3
assert count_evens([1,3,5]) == 0
print(count_evens([2,1,2,3,4]))
def big_diff(nums):
"""Geeft het verschil tussen het grootste en het kleinste getal in nums terug."""
smallest = nums[0]
biggest = nums[0]
for num in nums:
if num > biggest:
biggest = num
if num < smallest:
smallest = num
return biggest - smallest
assert big_diff([10,3,5,6]) == 7
assert big_diff([7,2,10,9]) == 8
assert big_diff([2,10,7,2]) == 8
print(big_diff([10,3,5,6]))
def centered_average(nums):
"""Geeft het gemiddelde van nums terug zonder de grootste en kleinste waarde."""
smallest = nums[0]
biggest = nums[0]
totalSum = 0
for num in nums:
if num < smallest:
smallest = num
if num > biggest:
biggest = num
totalSum += num
totalSum = totalSum - smallest - biggest
mean = totalSum // (len(nums) - 2)
return mean
assert centered_average([1,2,3,4,100]) == 3
assert centered_average([1,1,5,5,10,8,7]) == 5
assert centered_average([-10,-4,-2,-4,-2,0]) == -3
print(centered_average([1,2,3,4,100]))
def sum13(nums):
"""Geeft de som van nums terug, waarbij elke 13 en het getal erna niet meetellen."""
result = 0
skip = False
for num in nums:
if num == 13:
skip = True
elif skip:
skip = False
else:
result += num
return result
assert sum13([1,2,2,1]) == 6
assert sum13([1,1]) == 2
assert sum13([1,2,2,1,13]) == 6
print(sum13([1,2,2,1]))
def sum67(nums):
"""Geeft de som van nums terug; een 6 tot en met de volgende 7 telt niet mee."""
result = 0
skip = False
for num in nums:
if num == 6:
skip = True
elif num == 7 and skip:
skip = False
elif not(skip):
result += num
return result
assert sum67([1,2,2]) == 5
assert sum67([1,2,2,6,99,99,7]) == 5
assert sum67([1,1,6,7,2]) == 4
print(sum67([1,2,2]))
def has22(nums):
"""Geeft terug of er in nums twee keer een 2 naast elkaar staat."""
twoFound = False
for num in nums:
if num == 2 and twoFound:
return True
elif num == 2:
twoFound = True
else:
twoFound = False
return False
assert has22([1,2,2]) is True
assert has22([1,2,1,2]) is False
assert has22([2,1,2]) is False
print(has22([1,2,2]))
String-2 problems
def double_char(string):
"""Geeft string terug met elk teken verdubbeld."""
result = ''
for char in string:
result += char * 2
return result
assert double_char('The') == 'TThhee'
assert double_char('AAbb') == 'AAAAbbbb'
assert double_char('Hi-There') == 'HHii--TThheerree'
print(double_char('The'))
def count_hi(string):
"""Geeft terug hoe vaak "hi" in string voorkomt."""
hFound = False
result = 0
for char in string:
if char == 'i' and hFound:
result += 1
hFound = False
elif char == 'h':
hFound = True
else:
hFound = False
return result
assert count_hi('abc hi ho') == 1
assert count_hi('ABChi hi') == 2
assert count_hi('hihi') == 2
print(count_hi('abc hi ho'))
def cat_dog(string):
"""Geeft terug of "cat" en "dog" even vaak in string voorkomen."""
cats = 0
dogs = 0
for x in range(0, len(string)):
if x + 2 < len(string):
if (
string[x] == 'c'
and string[x + 1] == 'a'
and string[x + 2] == 't'
):
cats += 1
if (
string[x] == 'd'
and string[x + 1] == 'o'
and string[x + 2] == 'g'
):
dogs += 1
return cats == dogs
assert cat_dog('catdog') is True
assert cat_dog('catcat') is False
assert cat_dog('1cat1cadodog') is True
print(cat_dog('catdog'))
def count_code(string):
"""Geeft terug hoe vaak "code" in string staat, waarbij ? een letter is."""
codes = 0
for x in range(0, len(string)):
if x + 3 < len(string):
if (
string[x] == 'c'
and string[x + 1] == 'o'
and string[x + 2].isalpha()
and string[x + 3] == 'e'
):
codes += 1
return codes
assert count_code('aaacodebbb') == 1
assert count_code('codexxcode') == 2
assert count_code('cozexxcope') == 2
assert count_code('co1e') == 0
print(count_code('aaacodebbb'))
def end_other(a, b):
"""Geeft terug of a op b eindigt of b op a, zonder op hoofdletters te letten."""
turn_a = a[::-1].lower()
turn_b = b[::-1].lower()
length = min(len(a), len(b))
for x in range(0, length):
if turn_a[x] != turn_b[x]:
return False
return True
assert end_other('Hiabc','abc') is True
assert end_other('AbC','HiaBc') is True
assert end_other('abc','abXabc') is True
print(end_other('Hiabc','abc'))
def xyz_there(string):
"""Geeft terug of "xyz" ergens in string staat zonder punt er direct voor."""
for ix in range(0, len(string) - 2):
if (
string[ix] == 'x'
and string[ix + 1]== 'y'
and string[ix + 2] == 'z'
):
if ix == 0:
return True
elif string[ix - 1] != '.':
return True
return False
assert xyz_there('abcxyz') is True
assert xyz_there('abc.xyz') is False
assert xyz_there('xyz.abc') is True
print(xyz_there('abcxyz'))