Finish Elementary

This commit is contained in:
Clement Desmidt 2019-12-24 14:52:17 +01:00
parent 08b4100a7e
commit a615255dfa
15 changed files with 338 additions and 0 deletions

View File

@ -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!")

18
Elementary/best-stock.py Normal file
View File

@ -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!")

View File

@ -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!')

View File

@ -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!')

View File

@ -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')

14
Elementary/even-last.py Normal file
View File

@ -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!")

View File

@ -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!")

24
Elementary/first-word.py Normal file
View File

@ -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!")

28
Elementary/fizz-buzz.py Normal file
View File

@ -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!")

View File

@ -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!")

View File

@ -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!")

View File

@ -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!")

View File

@ -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!')

View File

@ -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!")

24
Elementary/three-words.py Normal file
View File

@ -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!")