guests = {}
def read_guestlist(file_name):
text_file = open(file_name,'r')
while True:
line_data = text_file.readline().strip().split(",")
if len(line_data) < 2:
# If no more lines, close file
text_file.close()
break
name = line_data[0]
age = int(line_data[1])
guests[name] = age
val = yield name, age
if val is not None:
val = val.split(",")
name = val[0]
age = int(val[1])
guests[name] = age
yield name, age
guestlist = read_guestlist("guest_list.txt")
for i in range(10):
print(next(guestlist))
guestlist.send('Jane, 35')
for guest in guestlist:
print(guest)
over_21 = (key for key, val in guests.items() if int(val) > 21)
for guest in over_21:
print(guest)
#Part 5
def chicken():
food = 'Chicken'
table = 1
for i in range(5):
seat = i + 1
yield f'Menu: {food}'
yield 'table: {table}'
yield f'seat: {seat}'
def beef():
food = 'Beef'
table = 2
for i in range(5):
seat = i + 1
yield f'Menu: {food}'
yield 'table: {table}'
yield f'seat: {seat}'
def fish():
food = 'Fish'
table = 3
for i in range(5):
seat = i + 1
yield f'Menu: {food}'
yield 'table: {table}'
yield f'seat: {seat}'
#Part 6
def meal_assigner(guests, generator1, generator2, generator3):
names = list(guests.keys())
for i in range(5):
yield (names[i], next(generator1))
for i in range(5):
i += 5
yield (names[i], next(generator2))
for i in range(5):
i += 10
yield (names[i], next(generator3))
meal_plans = meal_assigner(guests, chicken(), fish(), beef())
for i in meal_plans:
print(i)
So I have seen an answer that works on another forum post, but I am wondering why my solution for Part 5 creates a weird result in Part 6. Why does putting yield on seperate lines for the menu, table and seat not give you all the information for each individual guest the same way that yield f’menu: {food}’, f’table: {table}’, f’seat: {seat}’ does.
For reference, the output of my code looks like this:
(‘Tim’, ‘Menu: Chicken’)
(‘Tonya’, ‘table: {table}’)
(‘Mary’, ‘seat: 1’)
(‘Ann’, ‘Menu: Chicken’)
(‘Beth’, ‘table: {table}’)
(‘Sam’, ‘Menu: Fish’)
(‘Manny’, ‘table: {table}’)
(‘Kenton’, ‘seat: 1’)
(‘Kenny’, ‘Menu: Fish’)
(‘Dixie’, ‘table: {table}’)
(‘Jane’, ‘Menu: Beef’)
(‘Mallory’, ‘table: {table}’)
(‘Julian’, ‘seat: 1’)
(‘Edward’, ‘Menu: Beef’)
(‘Rose’, ‘table: {table}’)