Ejemplo n.º 1
0
def exercise103():
    users = get_data(5)
    birth = [user['birth'] for user in users]
    birth_summary = reduce(lambda a, b: a + b, birth)

    print(f"The sum of users birth: {birth_summary}")
    print(f'The average of users birth: {birth_summary/len(users)}')
Ejemplo n.º 2
0
def test_users():
    # create test data
    for person in get_data(10):
        name = person['name']
        user = User.create(name, randint(0, 1000000))

        # check user is added to the list + login works
        assert User.users[name].login(user.password)
        # negative check on login
        assert not user.login(-1)

        # positive+negative logout check
        assert user.logout(user.password)
        assert not user.logout(-1)

        # assert 'cup' not in user.items['cup']
        [user.buy('cup', 0.50) for _ in range(100)]
        assert user.credit == 50
        assert user.items['cup'] == 100
        with pytest.raises(LowCreditsError):
            user.buy('gold bar', 1000)

        [user.sell('cup', 1) for _ in range(100)]
        assert user.credit == 150
        assert user.items['cup'] == 0
        with pytest.raises(LowStockError):
            user.sell('cup', 1)
        with pytest.raises(MissingItemError):
            user.sell('chair', 1)
Ejemplo n.º 3
0
def exercise101():
    users = get_data(random.randint(4, 6))

    ages = map(lambda user: user['age'], users)

    def kid_filter(age):
        return age < 18

    kids = filter(kid_filter, ages)

    print(f'out of {len(users)} users we found kids with ages:')
    for age in kids:
        print(f'\t{age}')
    print('')
Ejemplo n.º 4
0
def main():
    divider = """
===================================================
===================================================\n\n
    """
    print('Getting data..')
    data = get_data(30)
    print(divider)
    time.sleep(1)

    print('sorting names with addresses')
    sorted_data = sort_names_with_addresses(data)
    print(sorted_data)
    print(divider)
    time.sleep(1)

    print('adding random postals')
    data_with_postals = add_random_postal(sorted_data)
    print(data_with_postals)
    print(divider)
    time.sleep(1)

    print(f'sum of postals: {sum_postal_codes(data_with_postals)}')
Ejemplo n.º 5
0
def exercise98():
    users = get_data(10)
    names = map(lambda user: user['name'], users)
    print((*names,))
Ejemplo n.º 6
0
# back_to_string = ''.join(words)
# print(type(back_to_string))
import time
import random
import operator
from functools import reduce
from exercises.data import get_data, get_lean_data


def combo(a, b):
    return a + b


yummy_fruits = ('apple', 'banana', 'cherry')
sour_fruits = ('orange', 'lemon', 'pineapple')
users20 = get_data(20)


def exercise96():
    def calc(n): return len(n) * sum(range(1, len(n) + 1))
    ai = ['6.', '40.0', '75.00', '126.00']
    res = map(calc, ai)
    print(sum(res))


def exercise97():
    names = ['Tom', 'Gon', 'Don', 'Bon']
    low = map(lambda name: name.lower(), names)
    hig = map(lambda name: name.upper(), names)
    print(*low, *hig)
Ejemplo n.º 7
0
    def start(self):
        t = self.get_time()
        self.last_measurement.date = self.get_date()
        result = self.operation(*self.args, **self.kwargs)
        self.last_measurement.run_time = self.get_time() - t
        return result


if __name__ == '__main__':
    from random import randint
    from exercises.level_1.oop.athlete import Sprinter
    from exercises.data import get_data

    winner = None
    distance = 100
    athletes = get_data(10)

    for athlete in athletes:
        sprinter = Sprinter(
            athlete['name'],
            power=randint(9, 20),
            speed=randint(20, 27),
            endurance=randint(1, 4),
            weight=randint(70, 80))
        timer = Timer(sprinter.run, distance=distance)

        name = timer.start()

        if winner is None:
            winner = {'name': name, 'time': timer.last_measurement}
        else:
Ejemplo n.º 8
0
import re
from lessons.regEx import sentences, data as regex_text
from exercises.data import create_user, get_data, get_data_as_text, transform_data_to_text
from exercises.level_1.loop_exercises.hobbies import add_random_hobby, add_second_hobby
from qaviton.utils.helpers import funcname

sentences = ''.join(sentences)
user = create_user()
users10 = get_data(10)
users20 = get_data(20)

add_random_hobby(users20)
add_random_hobby(users10)
add_second_hobby(users10)

user = transform_data_to_text([user])
users10 = transform_data_to_text(users10)
users20 = transform_data_to_text(users20)
users30 = get_data_as_text(30)

combined_data = ''.join([sentences, user, users10, users20, users30, regex_text])


def find_matches(regex, string):
    pattern = re.compile(regex)
    return [match for match in pattern.finditer(string)]


def exercise_63(data):
    # print the number of matches for b-x + F-W or whitespace 0 times or more + 2-6
    matches = find_matches(r'[b-x]([F-W]|\s)?[2-6]', data)
Ejemplo n.º 9
0
import sys, random, time

sys.path.append("../../")
from exercises.data import get_data

data = get_data(5)
users = [{'name': items['name']} for items in data]

hobbies = [
    'football', 'strongman', 'mario', 'tekken-3', 'beach', 'soccer', 'bacon',
    'pool', 'dodge ball'
]

hobbies2 = [
    'star wars', 'star trek', 'mario cart', 'draw', 'manga artist',
    'ogre slayer', 'p**n star', 'high five guy!', 'idan hakimi'
]

consolidated_hobbies = list(set(hobbies + hobbies2))
print(consolidated_hobbies)


def add_random_hobby(users):
    for user in users:
        user['hobby'] = random.choice(hobbies)
    time.sleep(1)


def count_hobbies(users):
    count = {hobby: 0 for hobby in hobbies}
    for user in users:
Ejemplo n.º 10
0
        self.address = None

    def add_address(self, address):
        self.address = address

    def info(self, address=None):
        if not address:
            if not self.address:
                raise Exception(
                    self.name +
                    ' has missing address, please enter or update the address')
            address = self.address
        print(self.name + ' is ' + str(self.age) + ' years old and lives in ' +
              address)


p1 = Person('jon', 16)
p2 = Person('dor', 23)
p3 = Person('ran', 18)

p1.add_address('israel ashdod hameyasdim 53')
p1.info()
p2.info()
p3.info('israel ashdod hameyasdim 51')
# print(p1.address)
# print(p2.address)

from exercises.data import get_data

people = get_data(10)
Ejemplo n.º 11
0
                print(employee)
                user_count += 1
        print(f'Processed {user_count} employees.')


def exercise4(filename):
    with open(filename) as csv_file:
        csv_file = csv.DictReader(csv_file)
        user_count = 0
        for employee in csv_file:
            print(employee)
            user_count += 1
        print(f'Processed {user_count} employees.')


if __name__ == "__main__":
    employees = get_data(20)
    departures = ('IT', 'Accounting', 'Sales', 'Management', 'Research',
                  'Development', 'Testing', 'Integration')
    for employee in employees:
        employee['departure'] = random.choice(departures)

    fieldnames = employees[0].keys()
    csv_file_no_headers = 'employees1.csv'
    csv_file_with_headers = 'employees2.csv'

    exercise1(csv_file_no_headers, employees)
    exercise2(csv_file_with_headers, employees)
    exercise3(csv_file_no_headers)
    exercise4(csv_file_with_headers)
Ejemplo n.º 12
0
from random import randint
import sys
sys.path.append("../../")
from exercises.data import get_data

data = get_data(20)


def getAddr(name):
    addresses = []
    for item in data:
        if (name == item['name']):
            addresses.append(item['address'])

    return addresses


def add_random_postal(name_with_addresses):
    num = randint(0, 9) * 10000 + randint(0, 9) * 1000 + randint(
        0, 9) * 100 + randint(0, 9) * 10 + randint(0, 9)
    if num < 9999:
        num = (f'0{num}')
    return (name_with_addresses + (f'{num}', ))


def sum_postal_codes(names_addresses_postals):
    sum_of_postals = 0
    for data_item in names_addresses_postals:
        sum_of_postals += int(data_item[2])
    return sum_of_postals
Ejemplo n.º 13
0
def create_more_users(users):
    initial_users_size = len(users)
    timestamp = time.time()
    while time.time() - timestamp < 2:
        users.extend(get_data(10))
    print(f'created {len(users)-initial_users_size} new users')
Ejemplo n.º 14
0
                f'found neighboring users \'{user["name"]}\' & \'{users[i-1]["name"]}\' with equal age {age}'
            )
            return
        age = user['age']


def create_more_users(users):
    initial_users_size = len(users)
    timestamp = time.time()
    while time.time() - timestamp < 2:
        users.extend(get_data(10))
    print(f'created {len(users)-initial_users_size} new users')


if __name__ == '__main__':
    users = get_data(2000)

    user_addresses = get_addresses(users)

    count_address_numbers(user_addresses)

    encounter_name_twice(users)

    sum_index10(users)

    name_and_address20(users)

    try:
        assert_names(users)
    except AssertionError:
        print('found user with invalid name')
Ejemplo n.º 15
0
from exercises.data import get_data

users = get_data(15)

# get the max age with lambda
print(f'max age {max(users, key=lambda user: user["age"])["age"]}')

# get the min age with lambda
print(f'min age {min(users, key=lambda user: user["age"])["age"]}')

# get the max age with for loop
age = users[0]['age']
for user in users:
    if user['age'] > age:
        age = user['age']
print(f'max age {age}')

# get the min age with for loop
age = users[0]['age']
for user in users:
    if user['age'] < age:
        age = user['age']
print(f'min age {age}')
Ejemplo n.º 16
0
from exercises.data import get_data
from exercises.level_1.sort_data import sort_names_with_addresses
from exercises.level_1.sort_data import add_random_postal
from exercises.level_1.sort_data import sum_postal_codes

if __name__ == "__main__":
    data = get_data(30)
    result1 = sort_names_with_addresses(data)
    result2 = add_random_postal(result1)
    result3 = sum_postal_codes(result2)
    print(result1)
    print(result2)
    print(result3)
Ejemplo n.º 17
0
def exercise102():
    from exercises.helpers import random_range
    users = get_data(1000)
    for _ in random_range(3, 30):
        suspect1 = users[random.randint(0, 999)]
        suspect2 = users[random.randint(0, 999)]
        suspect1['email'] = suspect2['email']
        print(suspect1['email'])

    # lean users
    users = tuple(map(lambda user: {
        'name': user['name'],
        'age': user['age'],
        'address': user['address'],
        'phone_number': user['phone_number'],
        'email': user['email']
    }, users))

    # find suspects
    counter = {}
    fraud_suspects = {}
    for user in users:
        if user['email'] in counter:
            if user['email'] not in fraud_suspects:
                fraud_suspects[user['email']] = [user, counter[user['email']]]
            else:
                fraud_suspects[user['email']].append(user)
        else:
            counter[user['email']] = user

    # print suspects
    for email in fraud_suspects:
        suspects = map(lambda user: {
            'name': user['name'],
            'address': user['address'],
            'phone_number': user['phone_number'],
        }, fraud_suspects[email])
        print(f'users with email {email} are suspects to fraud:')
        for suspect in suspects:
            print(f'\t{suspect}')
        print('')

    # get age groups
    young = filter(lambda user: user['age'] < 18, users)
    grown = filter(lambda user: 17 < user['age'] < 60, users)
    old = filter(lambda user: 59 < user['age'], users)

    # list all suspects
    all_suspects = []
    for suspects in fraud_suspects.values():
        for suspect in suspects:
            if suspect not in all_suspects:
                all_suspects.append(suspect)

    # get age group suspects
    young_suspects = filter(lambda user: user['age'] < 18, all_suspects)
    grown_suspects = filter(lambda user: 17 < user['age'] < 60, all_suspects)
    old_suspects = filter(lambda user: 59 < user['age'], all_suspects)

    # calculate age group fraud susceptibility
    young = tuple(young)
    grown = tuple(grown)
    old = tuple(old)
    susceptibility = [
        ['young', len(tuple(young_suspects))],
        ['grown', len(tuple(grown_suspects))],
        ['old', len(tuple(old_suspects))]
    ]
    if len(young) == 0:
        susceptibility[0][1] = '0%'
    else:
        susceptibility[0][1] = f'{round(100 * susceptibility[0][1] / len(young), 2)}%'
    if len(grown) == 0:
        susceptibility[1][1] = '0%'
    else:
        susceptibility[1][1] = f'{round(100 * susceptibility[1][1] / len(grown), 2)}%'
    if len(old) == 0:
        susceptibility[2][1] = '0%'
    else:
        susceptibility[2][1] = f'{round(100 * susceptibility[2][1] / len(old), 2)}%'

    susceptibility.sort(key=lambda group: group[1], reverse=True)
    print('groups susceptible to fraud are ordered from most to least susceptible in percentage:')
    print(*susceptibility)
Ejemplo n.º 18
0
from exercises.data import get_data

data = get_data(10)


for person in data:
    if person['age'] < 13:
        for k in person:
            print(k, person[k])
        break
else:
    print('all old people')
Ejemplo n.º 19
0
        users.extend(new_users)
        print(f'saving users in {filename}')
        with open(filename, 'w') as phone_book:
            json.dump(users, phone_book)
    return users


if __name__ == "__main__":
    print('creating 5 users...')
    users = [{
        'name': user['name'],
        'address': user['address'],
        'age': user['age'],
        'birth': user['birth'],
        'phone_number': user['phone_number']
    } for user in get_data(5)]

    users = get_phone_book(new_users=users)

    print('getting users name, age, phone_number')
    users = sorted([{
        'name': user['name'],
        'age': user['age'],
        'phone_number': user['phone_number'],
    } for user in users],
                   key=lambda user: user['age'])

    print('\nusers sorted by age:')
    for user in users:
        print(f'  {user["name"]}, {user["phone_number"]}')
Ejemplo n.º 20
0
from exercises.data import get_data
import json
import os

users_filename = 'users.json'
users = [{
    "name": "Kathleen Davis",
    "address": "1392 Washington Drive\nWest Jameston, AK 27438",
    "age": 29,
    "birth": 1967,
    "automotive_number": "547 4RN",
    "phone_number": "001-382-701-1411x1446",
    "bank_account": "GB04BSDB1627449867830",
    "favorite_color": "white",
    "company": "Patel-Morgan",
    "catch_phrase": "Down-sized uniform structure",
    "email": "*****@*****.**"
}]

if not os.path.exists(users_filename):
    with open(users_filename, 'w') as f:
        json.dump(users, f)

with open('users.json') as f:
    old_users = json.load(f)

new_users = get_data(5)

with open('users.json', 'w') as f:
    json.dump(old_users + new_users, f, indent=2)