summaryrefslogtreecommitdiff
path: root/py03/ex5
diff options
context:
space:
mode:
Diffstat (limited to 'py03/ex5')
-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}")