Mazoea Bora ya Uandishi wa Msimbo na Ukaguzi Madhubuti wa Msimbo
Tazama UwasilishajiKiwango cha dhahabu. Makundi kumi ya kutathmini kila pull request unayokagua.
x, tmp, data, calc, process; mantiki iliyowekwa ndani sana; kazi kubwa zisizoeleweka> 0; hakuna hali za ingizo batili; hakuna majaribio ya mantiki iliyobadilishwaNone bila maelezo; exceptions zilizomezwa; njia za kushindwa zilizofichwaManeno ya kitaalamu kwa hali za kawaida za ukaguzi. Tumia hizi kama mwanzo.
PR yenye makosa kwa makusudi kwa mazoezi. Je, unaweza kupata matatizo?
def calc(items, user, d=False):
t = 0
for i in items:
if i["type"] == "book":
t += i["price"] * 0.9
else:
t += i["price"]
if d:
t = t - t * 0.1
if user is not None:
if "is_premium" in user:
if user["is_premium"] == True:
t = t - t * 0.05
return t
def process_cart(items, user):
total = calc(items, user, True)
print("cart processed")
return totalfrom src.cart import calc
def test_calc():
items = [{"type": "book", "price": 100}]
user = {"is_premium": True}
assert calc(items, user, True) > 0# Cart Project
cart logiccalc ni la jumla sana - linapaswa kuwa calculate_cart_totald hakiko wazi - kinapaswa kuwa discount_enabledt na i havielezi0.9, 0.1, 0.05 zinapaswa kuwa thamani zilizopewa jinaif vilivyowekwa ndani sana kwa ukaguzi wa premium - tumia .get()process_cart ina athari ya pembeni (print) iliyochanganywa na mantiki ya biasharad=False kinachopitishwa kwa nafasi kama True kinachanganya> 0 halithibitishi usahihiprocess_cartBOOK_DISCOUNT_RATE = 0.10
GENERAL_DISCOUNT_RATE = 0.10
PREMIUM_DISCOUNT_RATE = 0.05
def calculate_item_price(item):
item_type = item["type"]
price = item["price"]
if item_type == "book":
return price * (1 - BOOK_DISCOUNT_RATE)
return price
def apply_general_discount(total_price, discount_enabled):
if not discount_enabled:
return total_price
return total_price * (1 - GENERAL_DISCOUNT_RATE)
def apply_premium_discount(total_price, user):
if not user or not user.get("is_premium", False):
return total_price
return total_price * (1 - PREMIUM_DISCOUNT_RATE)
def calculate_cart_total(items, user, discount_enabled=False):
total_price = 0
for item in items:
total_price += calculate_item_price(item)
total_price = apply_general_discount(total_price, discount_enabled)
total_price = apply_premium_discount(total_price, user)
return total_price
def process_cart(items, user):
total_price = calculate_cart_total(items, user, discount_enabled=True)
return total_priceKazi ya Ukaguzi wa PR: Kagua Kama Mhandisi Mtaalamu
Uwasilishaji wako lazima ujumuishe:
File: src/orders.py Line/Area: calc function Comment: Jina la kazi ni la jumla sana. Je, tunaweza kulibadilisha kuwa calculate_order_total kwa uwazi? File: tests/test_orders.py Line/Area: test_calc Comment: Jaribio hili linakagua tu kuwa matokeo ni makubwa kuliko sifuri. Je, tunaweza kudai thamani halisi inayotarajiwa badala yake?
Kagua faili zifuatazo:
def calc(items, vip=False):
total = 0
for i in items:
if i["type"] == "book":
total += i["price"] * 0.9
elif i["type"] == "electronics":
total += i["price"]
else:
total += i["price"]
if vip == True:
total = total - total * 0.05
return total
def checkout(items, user):
total = calc(items, user["vip"])
print("checking out order...")
print("total is", total)
return {"ok": True, "total": total}def f(x):
if x == None:
return False
return Truefrom src.orders import calc
def test_calc():
items = [{"type": "book", "price": 100}]
assert calc(items, False) > 0# Orders
Run it with python.Wahandisi wazuri hawafanyi msimbo ufanye kazi tu. Wanafanya msimbo uwe unaoeleweka, unaojaribiwa, unaokaguliwa, na unaoweza kuaminiwa.