開発環境
- macOS Sierra - Apple (OS)
- Emacs (Text Editor)
- Python 3.5 (プログラミング言語)
Exercises for Programmers: 57 Challenges to Develop Your Coding Skills (Brian P. Hogan 著、Pragmatic Bookshelf)のChapter 8(Working with Files)、44(Product Search)を取り組んでみる。
44(Product Search)
コード(Emacs)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os
import json
def find(items, name):
for d in items:
if d['name'] == name:
return d
return None
filename = 'products.json'
if not os.path.isfile(filename):
products = dict(
products=[
dict(name='Widget', price=25.00, quantity=5),
dict(name='Thing', price=15.00, quantity=5),
dict(name='Doodad', price=5.00, quantity=10)
]
)
with open(filename, 'w') as f:
json.dump(products, f)
with open(filename) as f:
products1 = json.load(f)
product_list = products1['products']
while True:
name = input('What is the product name? ')
if name == 'q':
break
product = find(product_list, name)
if product is None:
print('Sorry, that product was not found in our inventory.')
y = input('add? ')
if y == 'y':
price = input('Price: ')
quantity = input('Quantity: ')
product_list.append(
dict(name=name, price=price, quantity=quantity))
else:
print('Name: {name}\nPrice: ${price}\nQuantity on hand: {quantity}'
.format(**product))
with open(filename, 'w') as f:
json.dump(products1, f)
入出力結果(Terminal, IPython)
$ ls products.json ls: products.json: No such file or directory $ ./sample44.py What is the product name? iPad Sorry, that product was not found in our inventory. add? y Price: 500.00 Quantity: 1 What is the product name? iPad Name: iPad Price: $500.00 Quantity on hand: 1 What is the product name? Widget Name: Widget Price: $25.0 Quantity on hand: 5 What is the product name? q $ cat products.json {"products": [{"price": 25.0, "name": "Widget", "quantity": 5}, {"price": 15.0, "name": "Thing", "quantity": 5}, {"price": 5.0, "name": "Doodad", "quantity": 10}, {"price": "500.00", "name": "iPad", "quantity": "1"}]}$
0 コメント:
コメントを投稿