İçeriğe geç

Adların gizlendiği akış

Güvenlik · Zorluk 3/5 · Python · 26 satırKöken: Gerçek proje (anonim)

Görev

Yapay zekâdan istenen

Topluluk sitesinin herkese açık GET /feed uç noktası için yayımlanmış gönderileri en yeniden eskiye döndüren kodu yaz. Gönderiler üyelerin adını başlıkta ve metinde geçirebilir. Site ayarı hide_names açıkken akışta hiçbir üyenin adı görünmemeli: yazar "A member" olarak gösterilir ve gönderinin anonymous sürümü (adsız yazılmış title ve body) kullanılır. anonymous isteğe bağlı bir alandır; eski gönderilerde var, yenilerde olmayabilir.

Teslim notu

Yapay zekâ kodu teslim ederken şunu yazdı:

“Gizlilik kipi hazır: adlar gizliyken yazar "A member" olarak gösteriliyor ve gönderinin adsız sürümü kullanılıyor. Adsız sürümü olmayan kayıtlar da hata vermeden çalışıyor.”

Yapay zekânın yazdığı kod

Python26 satır

Hatalı bulduğun satırları işaretle; her işarete önem seç ve nedenini bir cümleyle yaz.

Satıra tıkla ya da dokun. Klavyede satıra gidip Enter'a bas.

0/5 işaret
Önem nasıl seçilir
  • KritikVeri kaybı, güvenlik açığı ya da para kaybı
  • ÖnemliGörevin istediği bir durumda kullanıcı yanlış sonuç alır
  • KüçükGörevin dışında kalan nadir bir uç durum ya da okunurluk

Test konusunda önem, testin yakalamadığı hatalı uygulamanın etkisine göre belirlenir.

Gerekçe puanlanmaz; sonuçta örnek cevapla karşılaştırırsın.

HIDDEN_AUTHOR = "A member"
2
3
def public_post(post: dict, hide_names: bool) -> dict:
    """Shape one post for the public feed."""
    if not hide_names:
        return {
            "id": post["id"],
            "author": post["author"],
            "title": post["title"],
            "body": post["body"],
        }
    anonymous = post.get("anonymous") or {}
    return {
        "id": post["id"],
        "author": HIDDEN_AUTHOR,
        "title": anonymous.get("title", post["title"]),
        "body": anonymous.get("body", post["body"]),
    }
20
21
def public_feed(posts: list, hide_names: bool, limit: int = 20) -> list:
    """GET /feed: the newest published posts, newest first."""
    published = [post for post in posts if post["published"]]
    published.sort(key=lambda post: post["published_at"], reverse=True)
    return [public_post(post, hide_names) for post in published[:limit]]

Kanıtlayan test

Doğru seçenek, bu kodda başarısız olan, yani hatayı ortaya çıkaran testtir.

Test seçenekleri
Göndermek için en az bir satır işaretle.

Gönderince sayaca yedi bilgi gider; gerekçe metnin cihazında kalır. Veriler