Python ile dörtgen, kare ve üçgen belirtme

Öğlen yapamadım, kafayı yiyordum. Gece kalktım bu saatte çözmeye çalısıyorum, matematik ile fazla ilgilenmemiş olduğum için kafam karışmıştı :D

Distinct nedir ?
Listedeki değerlerin aynı olanlarını çıkartma işlemi. Dizileri gördün mü?
 
Son düzenleyen: Moderatör:
Listedeki değerlerin aynı olanlarını çıkartma işlemi. Dizileri gördün mü?
Hayır.
Bunları biz değil senin öğrenmen lazım. Zaten seni zorlamayacaksa ne anlamı var.
Mesajını görmemişim. Ya aradığım mantık sadece işte, "a, b, c, d" hepsi birbirine eşitse, kare ab birbirine eşitse cd, birbirine eşitse dikdörtgen. Bunu öğrenmekti.
Bu arada dörtgeni yaptım, şu şekilde : sıra üçgende.

işlem = input("bir işlem giriniz.") if işlem == "dörtgen": a = int(input("kenar1: ")) b = int(input("kenar2: ")) c = int(input("kenar3: ")) d = int(input("kenar4: ")) if a == b and b == c and c == d and d == a: print("kare") elif a == b and c == d: print("dikdörtgen") else: print("dörtgen")
 
Son düzenleyen: Moderatör:
Bu arada dörtgeni yaptım şu şekilde:
Python:
edge1 = int(input("Kenar 1: "))
edge2 = int(input("Kenar 2: "))
edge3 = int(input("Kenar 3: "))
edge4 = int(input("Kenar 4: "))

if (edge1 == edge2 == edge3 == edge4):
    print("Kare");
elif ((edge1 == edge2 and edge3 == edge4)
    or (edge1 == edge3 and edge2 == edge4)
    or (edge1 == edge4 and edge2 == edge3)):
    print("Dikdortgen")
else:
    print("Dortgen")

Eksik sorgu olmuş. Böyle daha doğru olacaktır.
 
Kod:
istenenSekil = input("Üçgen veya dörtgen?: ").lower()

if istenenSekil == "dörtgen":
    print("""
                  2
            --------------
            |            |
          1 |            | 3
            |            |
            --------------
                  4
        """)
    a = input("1.kenarı giriniz: ")
    b = input("2.kenarı giriniz: ")
    c = input("3.kenarı giriniz: ")
    d = input("4.kenarı giriniz: ")

    if a == b == c == d:
        print("Kare")
  
    elif (a == c and b == d):
        print("Dikdörtgen")

    else:
        print("Sıradan bir dörtgen")

elif istenenSekil == "üçgen":
    pass

else:
    print("Belirtilen değerlerden birini seçiniz!")

Yazdığın programda çok fazla sorun var. Daha temiz ve kullanışlı yazsan daha iyi olur.
Python:
edge1 = int(input("Kenar 1: "))
edge2 = int(input("Kenar 2: "))
edge3 = int(input("Kenar 3: "))
edge4 = int(input("Kenar 4: "))

if (edge1 == edge2 == edge3 == edge4):
    print("Kare");
elif ((edge1 == edge2 and edge3 == edge4)
    or (edge1 == edge3 and edge2 == edge4)
    or (edge1 == edge4 and edge2 == edge3)):
    print("Dikdortgen")
else:
    print("Dortgen")

Eksik sorgu olmuş. Böyle daha doğru olacaktır.
Kullanıcı 1.kenarın hangisi olduğunu nereden bilecek. Bir şekil koymak daha sağlıklı olur.
 
Buraya ek olarak üçgen olmama ihtimali de var. Her 3 sayı üçgen oluşturacak diye bir şey yok. Onu da benim attığım videodan çıkartabilirsin. Gerçi öğretmenin bunu istemiyor olabilir ama yaparsan daha doğru olur.

Buradan istediğini anlayabilirsin :)

2 - 2 eşitlik var kısmını yapman için girilen sayıları "distinct" etmek yardımcı olabilir. Sonuçta listede 2 eleman kaldı ise dikdörtgen olur, 1 eleman kaldı ise kare ve 4 eleman kaldı ise dörtgen olur.

Ben arkadaşın if-else olayını öğrenmesi için verilmiş bir ödev olduğunu düşünerek en basit(ilkel :D ) yöntemi söylemiştim.

Ben alta kopyayı yazayım sen bulamazsan bunları uygun formatta yazarsın :D.
1. koşul (a=b=C=D) > bu koşul sağlanır ise kare.
2. koşul (( a=b ve D=C ) veya (a=C ve b=D) veya ( a=D ve C=b)) >bu koşul sağlanırsa dikdörtgen.
3. koşul > ilk 2 koşul sağlanmaz ise dörtgen.
Üçgen için ise.

1. koluş (a=b=C) >bu koşul sağlanıyor ise eşkenar üçgen.
2. koşul ((a=b) veya (C=b) veya (a=C)) > bu koşul sağlanıyor ise ikiz kenar.
3. koşul > ilk 2 koşul sağlanmıyor ise normal üçgen.
Tabi bu sorgulardan önce @berkay belirttiği gibi üçgen olup olmadığını kontrol etmen gerekecektir.
((A+b>C) ve (b+C>a) ve (a+C>b)) koşulu sağlanıyor ise üçgendir.

Not: Düzelt seçeneğine basınca harflerin bazısı büyüdü bazısı küçüldü ama ne anlatmak istediğim gayet net :).
 
Kullanıcı 1. kenarın ne olduğunu nereden bilecek. Bir şekil koymak daha sağlıklı olur.
Bilmesine gerek yok. Ne yazarsa yazsın sırası fark etmeksizin onun dikdörtgen olduğunu anlaması lazım. Tek bir olasılık yok. Bu yüzden a == c and b == d sorgusu eksik kalıyor.
 
Hayır, dikdörtgen olması için başka ihtimal yok. Varsa yazın. Yazılan programın kullanıcı açısından kullanımı rahat olmalı.
Kod:
(edge1 == edge2 and edge3 == edge4)
    or (edge1 == edge3 and edge2 == edge4)
    or (edge1 == edge4 and edge2 == edge3)

Sorgu bu şekilde olmalı. A kenarı ile C kenarı eşitken B kenarı ile D kenarı eşit olduğu gibi, A ile B eşitken C ile D de eşit olabilir. Böyle olduğunda tam anlamıyla doğru çalışan bir program olur. Şekil koyma ihtiyacı da kalmaz. Tek ihtimale göre düşünüyorsun.
 
kare.jpg
Bu sırayı baz alırsak. Kenar 1 ve 2'nin ve 4'le 3'ün eşit olması onun sıradan bir dörtgen olduğunu gösterir bunu else kullanarak basitce kontrol edebilirsin. 1 == 4 ve 2 == 3 içinde aynı durum geçerli.
 

Yeni konular

Geri
Yukarı