Python CodeBat

Deze pagina bevat uitvoerbare code.

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]))
3
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]))
7
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]))
3
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]))
6
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]))
5
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]))
True

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'))
TThhee
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'))
1
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'))
True
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'))
1
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'))
True
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'))
True