summaryrefslogtreecommitdiff
path: root/py03/ex5/ft_data_stream.py
diff options
context:
space:
mode:
authoryctct <yctct@yctct.com>2026-06-07 08:59:04 +0200
committeryctct <yctct@yctct.com>2026-06-07 08:59:04 +0200
commit15115b4c52bfda0d1cca9fa1155beecbb873ec35 (patch)
treeb3f0975e63eb04dcba732a78ce9bd9abda8acf01 /py03/ex5/ft_data_stream.py
First commit, add all files
Diffstat (limited to 'py03/ex5/ft_data_stream.py')
-rwxr-xr-xpy03/ex5/ft_data_stream.py50
1 files changed, 50 insertions, 0 deletions
diff --git a/py03/ex5/ft_data_stream.py b/py03/ex5/ft_data_stream.py
new file mode 100755
index 0000000..b2b0aa6
--- /dev/null
+++ b/py03/ex5/ft_data_stream.py
@@ -0,0 +1,50 @@
+#!/usr/bin/env python3
+# https://www.geeksforgeeks.org/python/how-to-yield-values-from-list-in-python/
+
+import random
+
+players = ['john', 'yaya', 'elise', 'niko']
+actions = ['jump', 'walk', 'run', 'swim']
+
+
+def gen_event(players, actions):
+ player = random.choice(players)
+ action = random.choice(actions)
+ yield player, action
+
+
+# print 1,000 events
+for event in range(1000):
+ # gen_event() returns a 'generator'
+ g = gen_event(players, actions)
+ # create a tuple
+ event_tuple = tuple(next(g))
+ # unpack the tuple
+ (player, action) = event_tuple
+ print(f"Event {event}: Player {player} did {action}")
+print()
+
+# create a list of 10 tuples
+events = []
+for i in range(10):
+ g = gen_event(players, actions)
+ event_tuple = tuple(next(g))
+ events.append(event_tuple)
+print(f"Build a list of 10 events: {events}")
+print()
+
+
+# consume list
+def consume_event(events, nb_events):
+ for i in range(nb_events):
+ ran = random.choice(events)
+ events.remove(ran)
+ yield ran
+
+
+nb_events = len(events)
+
+
+for event in consume_event(events, nb_events):
+ print(f"Got event from list: {event}")
+ print(f"Remains in list: {events}")