From 31b86f605904a796210aaf8dd629300ab52cdedd Mon Sep 17 00:00:00 2001 From: freezed Date: Mon, 1 May 2023 18:32:38 +0200 Subject: [PATCH] Add some python trainings --- hks/013-print-even-numbers.py | 39 ++++++++++++++ hks/015-multiples-of-3-and-5.py | 29 ++++++++++ hks/016-temperatures.py | 26 +++++++++ hks/017-print-every-two-letters-pairs.py | 25 +++++++++ ...18-print-every-pair-of-distinct-letters.py | 27 ++++++++++ hks/101-distance.py | 30 +++++++++++ hks/102-is-prime.py | 31 +++++++++++ hks/103-sum-every-prime-number-below-n.py | 45 ++++++++++++++++ ...04-print-every-prime-numbers-in-a-range.py | 54 +++++++++++++++++++ ...-first-prime-number-after-the-given-one.py | 45 ++++++++++++++++ hks/106-fibonacci-sequence.py | 32 +++++++++++ hks/202-print-sorbet-flavors.py | 9 ++++ hks/203-sets-of-love.py | 46 ++++++++++++++++ 13 files changed, 438 insertions(+) create mode 100644 hks/013-print-even-numbers.py create mode 100644 hks/015-multiples-of-3-and-5.py create mode 100644 hks/016-temperatures.py create mode 100644 hks/017-print-every-two-letters-pairs.py create mode 100644 hks/018-print-every-pair-of-distinct-letters.py create mode 100644 hks/101-distance.py create mode 100644 hks/102-is-prime.py create mode 100644 hks/103-sum-every-prime-number-below-n.py create mode 100644 hks/104-print-every-prime-numbers-in-a-range.py create mode 100644 hks/105-print-the-first-prime-number-after-the-given-one.py create mode 100644 hks/106-fibonacci-sequence.py create mode 100644 hks/202-print-sorbet-flavors.py create mode 100644 hks/203-sets-of-love.py diff --git a/hks/013-print-even-numbers.py b/hks/013-print-even-numbers.py new file mode 100644 index 0000000..bfea624 --- /dev/null +++ b/hks/013-print-even-numbers.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python3 +# coding: utf8 + +"""base-13-print-even-numbers""" + +def print_even_numbers(start, stop): + """ + Function documentation + + :Examples: + >>> print_even_numbers(1, 45) + 2 + 4 + 6 + 8 + 10 + 12 + 14 + 16 + 18 + 20 + 22 + 24 + 26 + 28 + 30 + 32 + 34 + 36 + 38 + 40 + 42 + 44 + """ + if start % 2 != 0: + start +=1 + + for numb in range(start, stop, 2): + print(numb) diff --git a/hks/015-multiples-of-3-and-5.py b/hks/015-multiples-of-3-and-5.py new file mode 100644 index 0000000..db1b09f --- /dev/null +++ b/hks/015-multiples-of-3-and-5.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python3 +# coding: utf8 + +"""115-multiples-of-3-and-5.py""" + +def multiple_35(number): + """ + :Examples: + >>> print(multiple_35(20)) + [3, 5, 6, 9, 10, 12, 15, 18] + """ + return [num for num in range(1, number) if num % 3 == 0 or num % 5 == 0] + + +def main(number): + """ + :Examples: + >>> main(20) + 78 + """ + + return sum(multiple_35(number)) + +print(main(1000)) + + +if __name__ == "__main__": + import doctest + doctest.testmod() diff --git a/hks/016-temperatures.py b/hks/016-temperatures.py new file mode 100644 index 0000000..fd04dfe --- /dev/null +++ b/hks/016-temperatures.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python3 +# coding: utf8 + +"""016-temperatures.py""" + +def fahrenheit_to_celsius(temp_f): + """ + :Examples: + >>> fahrenheit_to_celsius(212) + 100.0 + """ + return ((temp_f - 32) / float("1.8")) + + +def celsius_to_fahrenheit(temp_c): + """ + :Examples: + >>> celsius_to_fahrenheit(100) + 212.0 + """ + return ((9/5) * temp_c + 32) + + +if __name__ == "__main__": + import doctest + doctest.testmod() diff --git a/hks/017-print-every-two-letters-pairs.py b/hks/017-print-every-two-letters-pairs.py new file mode 100644 index 0000000..df5c7ae --- /dev/null +++ b/hks/017-print-every-two-letters-pairs.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python3 +# coding: utf8 + +"""017-print-every-two-letters-pairs.py""" +from string import ascii_lowercase + +def main(): + """ + :Examples: + >>> main() # doctest: +ELLIPSIS + aa + ab + ... + ba + bb + ... + zz + """ + for letter_1 in ascii_lowercase: + for letter_2 in ascii_lowercase: + print(f"{letter_1}{letter_2}") + +if __name__ == "__main__": + import doctest + doctest.testmod() diff --git a/hks/018-print-every-pair-of-distinct-letters.py b/hks/018-print-every-pair-of-distinct-letters.py new file mode 100644 index 0000000..e901a20 --- /dev/null +++ b/hks/018-print-every-pair-of-distinct-letters.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python3 +# coding: utf8 + +"""017-print-every-two-letters-pairs.py""" +from string import ascii_lowercase + +def main(): + """ + :Examples: + >>> main() # doctest: +ELLIPSIS + ab + ac + ... + ba + bc + ... + zy + """ + for letter_1 in ascii_lowercase: + for letter_2 in ascii_lowercase: + if letter_1 != letter_2: + print(f"{letter_1}{letter_2}") + +if __name__ == "__main__": + import doctest + doctest.testmod() + main() diff --git a/hks/101-distance.py b/hks/101-distance.py new file mode 100644 index 0000000..9100621 --- /dev/null +++ b/hks/101-distance.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python3 +# coding: utf8 + +"""01-distance.py""" + +def dist(points): + """ + Function documentation + + :Tests: + >>> dist([1, 2, 3]) + 2 + >>> dist([1, 2, 3, 2.5]) + 2 + >>> dist([1, 2, 3, 2.5, 3.5]) + 2.5 + >>> dist([1, 2, 3, 2.5, 3.5, 120]) + 119 + >>> dist([1, 2, 3, 2.5, 3.5, 120, -1000]) + 1120 + """ + + return(max(points) - min(points)) + + +if __name__ == "__main__": + import doctest + + doctest.testmod() + dist([1, 2, 3, 2.5, 3.5, 120]) diff --git a/hks/102-is-prime.py b/hks/102-is-prime.py new file mode 100644 index 0000000..3996f27 --- /dev/null +++ b/hks/102-is-prime.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python3 +# coding: utf8 + +"""02-is-prime.py""" + +def is_prime(number): + """ + :Examples: + >>> is_prime(20021731) + True + >>> is_prime(23) + True + >>> is_prime(1) + False + >>> is_prime(20) + False + """ + if number < 2: + return False + + for divisor in range(2, int(number ** 0.5) +1): + if number % divisor == 0: + return False + + return True + +assert is_prime(20021731) == True +assert is_prime(23) == True +assert is_prime(1) == False +assert is_prime(4) == False +assert is_prime(20) == False diff --git a/hks/103-sum-every-prime-number-below-n.py b/hks/103-sum-every-prime-number-below-n.py new file mode 100644 index 0000000..d81e8ef --- /dev/null +++ b/hks/103-sum-every-prime-number-below-n.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python3 +# coding: utf8 + +"""entrainement-03-sum-every-prime-number-below-n""" + +def is_prime(number): + """ + :Examples: + >>> is_prime(20021731) + True + >>> is_prime(23) + True + >>> is_prime(1) + False + >>> is_prime(20) + False + """ + if number < 2: + return False + + for divisor in range(2, int(number ** 0.5) +1): + if number % divisor == 0: + return False + + return True + + +def sum_primes(number): + """Function documentation + + :Examples: + >>> sum_primes(10) + 17 + >>> sum_primes(2) + 0 + >>> sum_primes(79) + 712 + """ + + return sum([num for num in range(number) if is_prime(num)]) + + +if __name__ == "__main__": + import doctest + doctest.testmod() diff --git a/hks/104-print-every-prime-numbers-in-a-range.py b/hks/104-print-every-prime-numbers-in-a-range.py new file mode 100644 index 0000000..29c98e9 --- /dev/null +++ b/hks/104-print-every-prime-numbers-in-a-range.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python3 +# coding: utf8 + +"""116-print-every-prime-numbers-in-a-range.py""" + +def is_prime(number): + """Function documentation. + + :Examples: + >>> is_prime(20021731) + True + >>> is_prime(23) + True + >>> is_prime(1) + False + >>> is_prime(4) + False + >>> is_prime(20) + False + """ + if number < 2: + return False + + for divisor in range(2, int(number ** 0.5) +1): + if number % divisor == 0: + return False + + return True + + +def prime_in_range(start, stop): + """ + :Examples: + >>> prime_in_range(1, 10) + '2, 3, 5, 7' + """ + primes = [num for num in range(start, stop) if is_prime(num)] + + last = primes.pop() + solution = "" + for prime in primes: + solution += f"{prime}, " + + solution += f"{last}" + + return solution + + +print(prime_in_range(10000, 10050)) + + +if __name__ == "__main__": + import doctest + doctest.testmod() diff --git a/hks/105-print-the-first-prime-number-after-the-given-one.py b/hks/105-print-the-first-prime-number-after-the-given-one.py new file mode 100644 index 0000000..3462116 --- /dev/null +++ b/hks/105-print-the-first-prime-number-after-the-given-one.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python3 +# coding: utf8 + +"""print-the-first-prime-number-after-the-given-one.py""" +from itertools import count as itercount + +def is_prime(number): + """ + :Examples: + >>> is_prime(20021731) + True + >>> is_prime(23) + True + >>> is_prime(1) + False + >>> is_prime(20) + False + """ + if number < 2: + return False + + for divisor in range(2, int(number ** 0.5) +1): + if number % divisor == 0: + return False + + return True + + +def main(target): + """ + :Examples: + >>> main(6) + 7 + """ + # genere une liste de nombre + for number in itercount(target): + if is_prime(number): + return number + + +print(main(100_000_000)) + +if __name__ == "__main__": + import doctest + doctest.testmod() diff --git a/hks/106-fibonacci-sequence.py b/hks/106-fibonacci-sequence.py new file mode 100644 index 0000000..e94a9ce --- /dev/null +++ b/hks/106-fibonacci-sequence.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python3 +# coding: utf8 + +"""entrainement-06-fibonacci-sequence""" + +def fibonacci(param): + """ + Function documentation + + :Examples: + >>> fibonacci(2) + [1, 1] + >>> fibonacci(5) + [1, 1, 2, 3, 5] + """ + a, b = 1, 1 + fib = [] + + for i in range(param): + fib.append(a) + a, b = b, a+b + i+=i + + return fib + + +if __name__ == "__main__": + import doctest + doctest.testmod() + + # assert fibonacci(5) == [1, 1, 2, 3, 5] + # assert fibonacci(2) == [1, 1] diff --git a/hks/202-print-sorbet-flavors.py b/hks/202-print-sorbet-flavors.py new file mode 100644 index 0000000..0cb0c43 --- /dev/null +++ b/hks/202-print-sorbet-flavors.py @@ -0,0 +1,9 @@ +flavors = ["Banana","Chocolate","Lemon","Pistachio","Raspberry","Strawberry","Vanilla",] +complements = flavors.copy() +recipies = [] + +for flavor in flavors: + complements.remove(flavor) + + for complement in complements: + print(f"{flavor}, {complement}") diff --git a/hks/203-sets-of-love.py b/hks/203-sets-of-love.py new file mode 100644 index 0000000..af841e9 --- /dev/null +++ b/hks/203-sets-of-love.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python3 +# coding: utf8 + +"""sets-of-love.py""" + + +def love_meet(bob, alice): + """ + Function documentation + + :Tests: + >>> alice = ['Ⅱ', 'Ⅳ', 'ⅩⅠⅩ', 'ⅩⅤ', 'Ⅳ', 'Ⅱ'] + >>> bob = ['Ⅳ', 'Ⅲ', 'Ⅱ', 'ⅩⅩ', 'Ⅱ', 'ⅩⅩ'] + >>> love_meet(bob, alice) + {'Ⅱ', 'Ⅳ'} + """ + + meet_districts = [district for district in alice if district in bob] + result = set() + for district in meet_districts: + result.add(district) + + return result + + +def affair_meet(bob, alice, silvester): + """ + Function documentation + + :Tests: + >>> alice = ['Ⅱ', 'Ⅳ', 'Ⅱ', 'ⅩⅠⅩ', 'ⅩⅤ', 'Ⅳ', 'Ⅲ'] + >>> bob = ['Ⅳ', 'Ⅲ', 'Ⅱ', 'ⅩⅩ', 'Ⅱ', 'ⅩⅩ'] + >>> silvester = ['ⅩVⅢ', 'ⅩⅠⅩ', 'Ⅲ', 'Ⅰ', 'Ⅲ', 'ⅩVⅢ'] + >>> affair_meet(bob, alice, silvester) + {'ⅩⅠⅩ'} + """ + + return {district for district in alice if district in silvester and district not in bob} + + + + + +if __name__ == "__main__": + import doctest + doctest.testmod()