MCPcopy Create free account
hub / github.com/bslatkin/effectivepython / ClientSession

Class ClientSession

example_code/item_076.py:171–214  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

169import math
170
171class ClientSession:
172 def __init__(self, send, receive, secret):
173 self.send = send
174 self.receive = receive
175 self.secret = secret
176 self.last_distance = None
177
178
179 print("Example 10")
180 def request_number(self):
181 self.send("NUMBER")
182 data = self.receive()
183 return int(data)
184
185
186 print("Example 11")
187 def report_outcome(self, number):
188 new_distance = math.fabs(number - self.secret)
189
190 if new_distance == 0:
191 decision = CORRECT
192 elif self.last_distance is None:
193 decision = UNSURE
194 elif new_distance < self.last_distance:
195 decision = WARMER
196 elif new_distance > self.last_distance:
197 decision = COLDER
198 else:
199 decision = SAME
200
201 self.last_distance = new_distance
202
203 self.send(f"REPORT {decision}")
204 return decision
205
206
207 print("Example 12")
208 def __iter__(self):
209 while True:
210 number = self.request_number()
211 decision = self.report_outcome(number)
212 yield number, decision
213 if decision == CORRECT:
214 return
215
216
217print("Example 13")

Callers 1

new_gameFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected