Compare commits

...

5 Commits

Author SHA1 Message Date
hugogogo
1ebc36c197 norminette 2025-10-28 21:33:13 +01:00
hugogogo
17b1da0822 move import 2025-10-26 21:08:41 +01:00
hugogogo
1cf9f29496 ex06 part 2 ok 2025-10-26 20:57:53 +01:00
hugogogo
2e1edf72b2 ex05 norminette 2025-10-26 20:29:33 +01:00
hugogogo
49461a0b25 norminette ex06 2025-10-26 20:27:34 +01:00
11 changed files with 101 additions and 35 deletions

View File

@@ -3,6 +3,8 @@ ft_tuple = ("Hello", "toto!")
ft_set = {"Hello", "tutu!"} ft_set = {"Hello", "tutu!"}
ft_dict = {"Hello": "titi!"} ft_dict = {"Hello": "titi!"}
# doc : https://docs.python.org/3.10/tutorial/datastructures.html
# ft_list # ft_list
ft_list.append("World" + ft_list[1][-1]) ft_list.append("World" + ft_list[1][-1])
ft_list.pop(1) ft_list.pop(1)
@@ -10,8 +12,8 @@ ft_list.pop(1)
# ft_tuple # ft_tuple
ft_tuple = ft_tuple[0], "France!" ft_tuple = ft_tuple[0], "France!"
# ft_set # ft_set, symetric difference :
# ft_set = "{'Hello', 'Paris!'}" # mouhaha # https://docs.python.org/3.10/library/stdtypes.html#frozenset.symmetric_difference
ft_set ^= {"tutu!", "Paris!"} ft_set ^= {"tutu!", "Paris!"}
# ft_dict # ft_dict
@@ -19,5 +21,5 @@ ft_dict["Hello"] = "42Paris!"
print(ft_list) print(ft_list)
print(ft_tuple) print(ft_tuple)
print(ft_set) print(ft_set) # set is unordered, so output order is hasardous
print(ft_dict) print(ft_dict)

View File

@@ -1,16 +1,29 @@
import datetime as dt import datetime as dt
import time as tm
# https://docs.python.org/3.10/library/datetime.html?highlight=time#datetime.datetime # https://docs.python.org/3.10/library/datetime.html?highlight=time#datetime.datetime
now = dt.datetime.now() now = dt.datetime.now()
epoch = dt.datetime(1970, 1, 1)
# # for memory
# epoch = dt.datetime(1970, 1, 1)
# delta = now - epoch
# deltaInSeconds = delta.total_seconds()
# https://docs.python.org/3.10/library/datetime.html?highlight=time#strftime-and-strptime-behavior # https://docs.python.org/3.10/library/datetime.html?highlight=time#strftime-and-strptime-behavior
formatDate = now.strftime("%b %d %Y") format_date = now.strftime("%b %d %Y")
delta = now - epoch epoch_delta_in_seconds = tm.time()
deltaInSeconds = delta.total_seconds() # str.format https://docs.python.org/3.10/library/string.html#formatstrings
deltaInSecondsStr = "{:,.3f}".format(float(deltaInSeconds)) epoch_delta_in_seconds_str = "{:,.4f}".format(epoch_delta_in_seconds)
deltaInScientificStr = "{:.2e}".format(float(deltaInSeconds)) epoch_delta_in_scientific_str = "{:.2e}".format(epoch_delta_in_seconds)
print("Seconds since January 1, 1970: " + deltaInSecondsStr + " or " + deltaInScientificStr + " in scientific notation\n" + formatDate) print(
"Seconds since January 1, 1970: ",
epoch_delta_in_seconds_str,
" or ",
epoch_delta_in_scientific_str,
" in scientific notation\n",
format_date,
sep=""
)

View File

@@ -4,7 +4,8 @@ def all_thing_is_obj(object: any) -> int:
# https://docs.python.org/3.10/tutorial/controlflow.html#match-statements # https://docs.python.org/3.10/tutorial/controlflow.html#match-statements
match object: match object:
# class patterm : check against a class (check if instance when empty arguments) https://docs.python.org/3/reference/compound_stmts.html#class-patterns # class pattern, against a class (or instance if empty arguments):
# https://docs.python.org/3/reference/compound_stmts.html#class-patterns
case list(): case list():
print("List : ", ofType) print("List : ", ofType)
case tuple(): case tuple():

View File

@@ -4,12 +4,18 @@ def NULL_not_found(object: any) -> int:
match object: match object:
case None: case None:
print("Nothing:", object, nullType) print("Nothing:", object, nullType)
# using a guard https://docs.python.org/3/reference/compound_stmts.html#guards
# (NaN == NaN) = false https://docs.python.org/3.10/reference/expressions.html#value-comparisons "A counter-intuitive implication is that not-a-number values are not equal to themselves" # using a guard :
# https://docs.python.org/3/reference/compound_stmts.html#guards
# (NaN == NaN) = false :
# https://docs.python.org/3.10/reference/expressions.html#value-comparisons
# "A counter-intuitive implication is that not-a-number values are not
# equal to themselves"
case float() if object != object: case float() if object != object:
print("Cheese:", object, nullType) print("Cheese:", object, nullType)
# need check before int(), why ? # need check before int(), why ?
case bool() if object == False : case bool() if object is False:
print("Fake:", object, nullType) print("Fake:", object, nullType)
case int() if object == 0: case int() if object == 0:
print("Zero:", object, nullType) print("Zero:", object, nullType)

View File

@@ -18,7 +18,9 @@ def check_parity(args: list[str]):
else: else:
print("I'm Odd.") print("I'm Odd.")
# execute module as a script : https://docs.python.org/3.10/tutorial/modules.html#executing-modules-as-scripts
# execute module as a script :
# https://docs.python.org/3.10/tutorial/modules.html#executing-modules-as-scripts
if __name__ == "__main__": if __name__ == "__main__":
# https://docs.python.org/3.10/library/sys.html # https://docs.python.org/3.10/library/sys.html
import sys import sys

View File

@@ -9,7 +9,7 @@ def get_message(argv: list[str]) -> str:
# stdin https://docs.python.org/3/library/sys.html#sys.stdin # stdin https://docs.python.org/3/library/sys.html#sys.stdin
print("What is the text to count?") print("What is the text to count?")
msg = sys.stdin.readline() msg = sys.stdin.readline(424242)
return msg return msg
@@ -22,7 +22,6 @@ def main(argv: list[str]):
print("AssertionError:", err) print("AssertionError:", err)
return return
char_count = len(msg) char_count = len(msg)
print("The text contains", char_count, "characters:") print("The text contains", char_count, "characters:")
@@ -30,7 +29,8 @@ def main(argv: list[str]):
upper_count = len(list(filter(str.isupper, msg))) upper_count = len(list(filter(str.isupper, msg)))
print(upper_count, "upper letters") print(upper_count, "upper letters")
# generator expressions https://docs.python.org/3.10/reference/expressions.html#generator-expressions # generator expressions
# https://docs.python.org/3.10/reference/expressions.html#generator-expressions
lower_count = sum(1 for char in msg if char.islower()) lower_count = sum(1 for char in msg if char.islower())
print(lower_count, "lower letters") print(lower_count, "lower letters")
@@ -39,11 +39,13 @@ def main(argv: list[str]):
punctuation_count = sum(1 for char in msg if char in punctuation) punctuation_count = sum(1 for char in msg if char in punctuation)
print(punctuation_count, "punctuation marks") print(punctuation_count, "punctuation marks")
# array.count() https://docs.python.org/3.10/library/array.html?highlight=count#array.array.count # array.count()
# https://docs.python.org/3.10/library/array.html?highlight=count#array.array.count
space_count = msg.count(" ") + msg.count("\n") space_count = msg.count(" ") + msg.count("\n")
print(space_count, "spaces") print(space_count, "spaces")
# list comprehension https://docs.python.org/3.10/tutorial/datastructures.html#list-comprehensions # list comprehension
# https://docs.python.org/3.10/tutorial/datastructures.html#list-comprehensions
digits_count = len([char for char in msg if char.isdigit()]) digits_count = len([char for char in msg if char.isdigit()])
print(digits_count, "digits") print(digits_count, "digits")

39
d00/ex06/filterstring.py Normal file
View File

@@ -0,0 +1,39 @@
def get_args(argv: list[str]) -> dict[str, int]:
"""check and return arguments"""
error_msg = "the arguments are bad"
assert len(argv) == 3, error_msg
try:
msg_len = int(argv[2])
except ValueError:
raise AssertionError(error_msg)
return {"text": argv[1], "len": msg_len}
def main(argv: list[str]):
"""filter small words in string"""
try:
args = get_args(argv)
except AssertionError as err:
print("AssertionError:", err)
return
text = args["text"]
maxlen = args["len"]
print(text.split())
words = [word for word in text.split()] # mouhaha
filter_words = list(ft_filter(lambda word: len(word) > maxlen, words))
print(filter_words)
if __name__ == "__main__":
import sys
from ft_filter import ft_filter
main(sys.argv)

View File

@@ -5,7 +5,8 @@ def ft_filter(function, iterable):
Return an iterator yielding those items of iterable for which function(item) Return an iterator yielding those items of iterable for which function(item)
is true. If function is None, return the items that are true.""" is true. If function is None, return the items that are true."""
# iter https://docs.python.org/3.10/library/functions.html?highlight=iter#iter # iter
# https://docs.python.org/3.10/library/functions.html?highlight=iter#iter
if function is None: if function is None:
return iter([item for item in iterable if item]) return iter([item for item in iterable if item])
else: else: