parent
08b4100a7e
commit
a615255dfa
15 changed files with 338 additions and 0 deletions
@ -0,0 +1,20 @@ |
||||
def checkio(numbers_array: tuple) -> list: |
||||
return sorted(numbers_array, key=lambda o: abs(o)) |
||||
|
||||
|
||||
# These "asserts" using only for self-checking and not necessary for auto-testing |
||||
if __name__ == '__main__': |
||||
print('Example:') |
||||
print(list(checkio((-20, -5, 10, 15)))) |
||||
|
||||
|
||||
def check_it(array): |
||||
if not isinstance(array, (list, tuple)): |
||||
raise TypeError("The result should be a list or tuple.") |
||||
return list(array) |
||||
|
||||
|
||||
assert check_it(checkio((-20, -5, 10, 15))) == [-5, 10, 15, -20], "Example" # or (-5, 10, 15, -20) |
||||
assert check_it(checkio((1, 2, 3, 0))) == [0, 1, 2, 3], "Positive numbers" |
||||
assert check_it(checkio((-1, -2, -3, 0))) == [0, -1, -2, -3], "Negative numbers" |
||||
print("Coding complete? Click 'Check' to review your tests and earn cool rewards!") |
@ -0,0 +1,18 @@ |
||||
def best_stock(a): |
||||
max_value = 0 |
||||
best = None |
||||
for k, v in a.items(): |
||||
if v > max_value: |
||||
max_value = v |
||||
best = k |
||||
return best |
||||
|
||||
|
||||
if __name__ == '__main__': |
||||
print("Example:") |
||||
print(best_stock({"CAC": 10.0, "ATX": 390.2, "WIG": 1.2})) |
||||
|
||||
# These "asserts" are used for self-checking and not for an auto-testing |
||||
assert best_stock({"CAC": 10.0, "ATX": 390.2, "WIG": 1.2}) == "ATX" |
||||
assert best_stock({"CAC": 91.1, "ATX": 1.01, "TASI": 120.9}) == "TASI" |
||||
print("Coding complete? Click 'Check' to earn cool rewards!") |
@ -0,0 +1,20 @@ |
||||
import re |
||||
|
||||
|
||||
def between_markers(text: str, begin: str, end: str) -> str: |
||||
""" |
||||
returns substring between two given markers |
||||
""" |
||||
return re.findall(r"{}(.*){}".format(re.escape(begin), re.escape(end)), text)[0] |
||||
|
||||
|
||||
if __name__ == '__main__': |
||||
print('Example:') |
||||
print(between_markers('What is >apple<', '>', '<')) |
||||
|
||||
# These "asserts" are used for self-checking and not for testing |
||||
assert between_markers('What is >apple<', '>', '<') == "apple" |
||||
assert between_markers('What is [apple]', '[', ']') == "apple" |
||||
assert between_markers('What is ><', '>', '<') == "" |
||||
assert between_markers('>apple<', '>', '<') == "apple" |
||||
print('Wow, you are doing pretty good. Time to check it!') |
@ -0,0 +1,28 @@ |
||||
import re |
||||
|
||||
|
||||
def between_markers(text: str, begin: str, end: str) -> str: |
||||
""" |
||||
returns substring between two given markers |
||||
""" |
||||
if text.count(begin) == 0: |
||||
text = begin+text |
||||
if text.count(end) == 0: |
||||
text = text+end |
||||
found = re.findall(r"{}(.*){}".format(re.escape(begin), re.escape(end)), text) |
||||
return found[0] if len(found) > 0 else "" |
||||
|
||||
|
||||
if __name__ == '__main__': |
||||
print('Example:') |
||||
print(between_markers('What is >apple<', '>', '<')) |
||||
|
||||
# These "asserts" are used for self-checking and not for testing |
||||
assert between_markers('What is >apple<', '>', '<') == "apple", "One sym" |
||||
assert between_markers("<head><title>My new site</title></head>", |
||||
"<title>", "</title>") == "My new site", "HTML" |
||||
assert between_markers('No[/b] hi', '[b]', '[/b]') == 'No', 'No opened' |
||||
assert between_markers('No [b]hi', '[b]', '[/b]') == 'hi', 'No close' |
||||
assert between_markers('No hi', '[b]', '[/b]') == 'No hi', 'No markers at all' |
||||
assert between_markers('No <hi>', '>', '<') == '', 'Wrong direction' |
||||
print('Wow, you are doing pretty good. Time to check it!') |
@ -0,0 +1,37 @@ |
||||
def bigger_price(limit: int, data: list) -> list: |
||||
""" |
||||
TOP most expensive goods |
||||
""" |
||||
data = sorted(data, key=lambda o: o["price"]) |
||||
data.reverse() |
||||
return data[0: limit] |
||||
|
||||
|
||||
|
||||
if __name__ == '__main__': |
||||
from pprint import pprint |
||||
print('Example:') |
||||
pprint(bigger_price(2, [ |
||||
{"name": "bread", "price": 100}, |
||||
{"name": "wine", "price": 138}, |
||||
{"name": "meat", "price": 15}, |
||||
{"name": "water", "price": 1} |
||||
])) |
||||
|
||||
# These "asserts" using for self-checking and not for auto-testing |
||||
assert bigger_price(2, [ |
||||
{"name": "bread", "price": 100}, |
||||
{"name": "wine", "price": 138}, |
||||
{"name": "meat", "price": 15}, |
||||
{"name": "water", "price": 1} |
||||
]) == [ |
||||
{"name": "wine", "price": 138}, |
||||
{"name": "bread", "price": 100} |
||||
], "First" |
||||
|
||||
assert bigger_price(1, [ |
||||
{"name": "pen", "price": 5}, |
||||
{"name": "whiteboard", "price": 170} |
||||
]) == [{"name": "whiteboard", "price": 170}], "Second" |
||||
|
||||
print('Done! Looks like it is fine. Go and check it') |
@ -0,0 +1,14 @@ |
||||
def checkio(array): |
||||
return sum([x for i, x in enumerate(array) if i % 2 == 0]) * array[-1:][0] if len(array) > 0 else 0 |
||||
|
||||
|
||||
# These "asserts" using only for self-checking and not necessary for auto-testing |
||||
if __name__ == '__main__': |
||||
print('Example:') |
||||
print(checkio([0, 1, 2, 3, 4, 5])) |
||||
|
||||
assert checkio([0, 1, 2, 3, 4, 5]) == 30, "(0+2+4)*5=30" |
||||
assert checkio([1, 3, 5]) == 30, "(1+5)*5=30" |
||||
assert checkio([6]) == 36, "(6)*6=36" |
||||
assert checkio([]) == 0, "An empty array = 0" |
||||
print("Coding complete? Click 'Check' to review your tests and earn cool rewards!") |
@ -0,0 +1,16 @@ |
||||
def first_word(text: str) -> str: |
||||
""" |
||||
returns the first word in a given text. |
||||
""" |
||||
return text[0:text.find(" ")] if text.find(" ") != -1 else text |
||||
|
||||
|
||||
if __name__ == '__main__': |
||||
print("Example:") |
||||
print(first_word("Hello world")) |
||||
|
||||
# These "asserts" are used for self-checking and not for an auto-testing |
||||
assert first_word("Hello world") == "Hello" |
||||
assert first_word("a word") == "a" |
||||
assert first_word("hi") == "hi" |
||||
print("Coding complete? Click 'Check' to earn cool rewards!") |
@ -0,0 +1,24 @@ |
||||
import re |
||||
|
||||
|
||||
def first_word(text: str) -> str: |
||||
""" |
||||
returns the first word in a given text. |
||||
""" |
||||
s = re.findall(r"(\b[a-zA-Z']+)", text) |
||||
return s[0] |
||||
|
||||
|
||||
if __name__ == '__main__': |
||||
print("Example:") |
||||
print(first_word("Hello world")) |
||||
|
||||
# These "asserts" are used for self-checking and not for an auto-testing |
||||
assert first_word("Hello world") == "Hello" |
||||
assert first_word(" a word ") == "a" |
||||
assert first_word("don't touch it") == "don't" |
||||
assert first_word("greetings, friends") == "greetings" |
||||
assert first_word("... and so on ...") == "and" |
||||
assert first_word("hi") == "hi" |
||||
assert first_word("Hello.World") == "Hello" |
||||
print("Coding complete? Click 'Check' to earn cool rewards!") |
@ -0,0 +1,28 @@ |
||||
# Your optional code here |
||||
# You can import some modules or create additional functions |
||||
|
||||
|
||||
def checkio(number: int) -> str: |
||||
result = [] |
||||
if number % 3 == 0: |
||||
result.append("Fizz") |
||||
if number % 5 == 0: |
||||
result.append("Buzz") |
||||
if len(result) == 0: |
||||
return str(number) |
||||
return " ".join(result) |
||||
|
||||
|
||||
# Some hints: |
||||
# Convert a number in the string with str(n) |
||||
|
||||
# These "asserts" using only for self-checking and not necessary for auto-testing |
||||
if __name__ == '__main__': |
||||
print('Example:') |
||||
print(checkio(15)) |
||||
|
||||
assert checkio(15) == "Fizz Buzz", "15 is divisible by 3 and 5" |
||||
assert checkio(6) == "Fizz", "6 is divisible by 3" |
||||
assert checkio(5) == "Buzz", "5 is divisible by 5" |
||||
assert checkio(7) == "7", "7 is not divisible by 3 or 5" |
||||
print("Coding complete? Click 'Check' to review your tests and earn cool rewards!") |
@ -0,0 +1,25 @@ |
||||
def checkio(*args): |
||||
difference = 0 |
||||
for first_number in args: |
||||
for second_number in args: |
||||
difference_between_numbers = abs(first_number - second_number) |
||||
if difference_between_numbers > difference: |
||||
difference = difference_between_numbers |
||||
return difference |
||||
|
||||
|
||||
# These "asserts" using only for self-checking and not necessary for auto-testing |
||||
if __name__ == '__main__': |
||||
def almost_equal(checked, correct, significant_digits): |
||||
precision = 0.1 ** significant_digits |
||||
return correct - precision < checked < correct + precision |
||||
|
||||
|
||||
print('Example:') |
||||
print(checkio(1, 2, 3)) |
||||
|
||||
assert almost_equal(checkio(1, 2, 3), 2, 3), "3-1=2" |
||||
assert almost_equal(checkio(5, -5), 10, 3), "5-(-5)=10" |
||||
assert almost_equal(checkio(10.2, -2.2, 0, 1.1, 0.5), 12.4, 3), "10.2-(-2.2)=12.4" |
||||
assert almost_equal(checkio(), 0, 3), "Empty" |
||||
print("Coding complete? Click 'Check' to review your tests and earn cool rewards!") |
@ -0,0 +1,35 @@ |
||||
def popular_words(text: str, words: list) -> dict: |
||||
result = {} |
||||
text = text.lower() |
||||
for word in words: |
||||
# print(text[0:len(word)+1]) |
||||
result[word] = 1 if text[-(len(word)):] == word else 0 |
||||
result[word] += 1 if text[0:len(word)+1] == word+" " else 0 |
||||
result[word] += text.count(" "+word+" ") |
||||
result[word] += text.count(word+"\n") |
||||
result[word] += text.count("\n"+word+" ") |
||||
return result |
||||
|
||||
|
||||
if __name__ == '__main__': |
||||
print("Example:") |
||||
print(popular_words(''' |
||||
When I was One |
||||
I had just begun |
||||
When I was Two |
||||
I was nearly new |
||||
''', ['i', 'was', 'three', 'near'])) |
||||
|
||||
# These "asserts" are used for self-checking and not for an auto-testing |
||||
assert popular_words(''' |
||||
When I was One |
||||
I had just begun |
||||
When I was Two |
||||
I was nearly new |
||||
''', ['i', 'was', 'three', 'near']) == { |
||||
'i': 4, |
||||
'was': 3, |
||||
'three': 0, |
||||
'near': 0 |
||||
} |
||||
print("Coding complete? Click 'Check' to earn cool rewards!") |
@ -0,0 +1,17 @@ |
||||
def left_join(phrases): |
||||
""" |
||||
Join strings and replace "right" to "left" |
||||
""" |
||||
return ",".join([x.replace("right", "left") for x in phrases]) |
||||
|
||||
|
||||
if __name__ == '__main__': |
||||
print('Example:') |
||||
print(left_join(("left", "right", "left", "stop"))) |
||||
|
||||
# These "asserts" using only for self-checking and not necessary for auto-testing |
||||
assert left_join(("left", "right", "left", "stop")) == "left,left,left,stop", "All to left" |
||||
assert left_join(("bright aright", "ok")) == "bleft aleft,ok", "Bright Left" |
||||
assert left_join(("brightness wright",)) == "bleftness wleft", "One phrase" |
||||
assert left_join(("enough", "jokes")) == "enough,jokes", "Nothing to replace" |
||||
print("Coding complete? Click 'Check' to review your tests and earn cool rewards!") |
@ -0,0 +1,19 @@ |
||||
def second_index(text: str, symbol: str) -> [int, None]: |
||||
""" |
||||
returns the second index of a symbol in a given text |
||||
""" |
||||
symbols = [index for index, letter in enumerate(text) if letter == symbol] |
||||
return symbols[1] if len(symbols) > 1 else None |
||||
|
||||
|
||||
if __name__ == '__main__': |
||||
print('Example:') |
||||
print(second_index("sims", "s")) |
||||
|
||||
# These "asserts" are used for self-checking and not for an auto-testing |
||||
assert second_index("sims", "s") == 3, "First" |
||||
assert second_index("find the river", "e") == 12, "Second" |
||||
assert second_index("hi", " ") is None, "Third" |
||||
assert second_index("hi mayor", " ") is None, "Fourth" |
||||
assert second_index("hi mr Mayor", " ") == 5, "Fifth" |
||||
print('You are awesome! All tests are done! Go Check it!') |
@ -0,0 +1,13 @@ |
||||
def find_message(text: str) -> str: |
||||
return "".join([x for x in text if x in "ABCDEFGHIJKLMNOPQRSTUVWXYZ"]) |
||||
|
||||
|
||||
if __name__ == '__main__': |
||||
print('Example:') |
||||
print(find_message("How are you? Eh, ok. Low or Lower? Ohhh.")) |
||||
|
||||
# These "asserts" using only for self-checking and not necessary for auto-testing |
||||
assert find_message("How are you? Eh, ok. Low or Lower? Ohhh.") == "HELLO", "hello" |
||||
assert find_message("hello world!") == "", "Nothing" |
||||
assert find_message("HELLO WORLD!!!") == "HELLOWORLD", "Capitals" |
||||
print("Coding complete? Click 'Check' to review your tests and earn cool rewards!") |
@ -0,0 +1,24 @@ |
||||
def checkio(words: str) -> bool: |
||||
count = 0 |
||||
words = words.split(" ") |
||||
for word in words: |
||||
if word[0].isalpha(): |
||||
count += 1 |
||||
if count == 3: |
||||
return True |
||||
else: |
||||
count = 0 |
||||
return False |
||||
|
||||
|
||||
# These "asserts" using only for self-checking and not necessary for auto-testing |
||||
if __name__ == '__main__': |
||||
print('Example:') |
||||
print(checkio("Hello World hello")) |
||||
|
||||
assert checkio("Hello World hello") == True, "Hello" |
||||
assert checkio("He is 123 man") == False, "123 man" |
||||
assert checkio("1 2 3 4") == False, "Digits" |
||||
assert checkio("bla bla bla bla") == True, "Bla Bla" |
||||
assert checkio("Hi") == False, "Hi" |
||||
print("Coding complete? Click 'Check' to review your tests and earn cool rewards!") |
Loading…
Reference in new issue