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

2
--------------
| |
1| | 3
| |
--------------
4
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.
Hayır göstermez. 1 ile 2 ve 4 ile 3 eşit ise dikdörtgendir. Gerçi şeklin yamuk gelmiş ne demek istediğini anlamadım.

Şekle göre düşünmeyeceksin. Ortada şekil falan yok. Karşılıklı iki kenarları eşit şekil dikdörtgendir. Bu yüzden girilen sayılardan 2 grup birbirine eşitse dikdörtgen oluyor. Mesela ben 2, 3, 3, 2 girdim bununla dikdörtgen yapabilirim. Bu yüzden evet bundan dikdörtgen olur diyeceksin.
 
Hayır göstermez. 1 ile 2 ve 4 ile 3 eşit ise dikdörtgendir.
Bir önceki mesajı düzenledim.

Sizin dediğiniz gibi olursa dikdörtgen olmuyor. Siz kullanıcının girdiği her birinin aynısı 2'li değer için dikdörtgen karşılığını döndürüyorsunuz. Kullanıcıya bir şekil vermek bu sorunların önüne geçmek için. Eğer bu şekilde olursa kullanıcı sizin hangi sırayla kenarları numaralandırdığınızı anlayamaz.
işlem = input("bir işlem giriniz.")
Bu kısımda kullanıcının mesela daire yazmasını engellemek için else kullanmalısın.
 
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 :).
Şu şekilde yazdım ama çalıştırdığımda hata veriyor:
File "<ipython-input-24-c4acf7abecfe>", line 26
elif a == b or c == b or a == c:
^
SyntaxError: invalid syntax


Kod:
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 == c == d:
       
        print("kare")
    elif a == b and d == c or a == c and b == d and a == d and c == b:
        print("dikdörtgen")
    else:
        print("dörtgen")
       
elif işlem == "üçgen":
    a = int(input("kenar1: "))
    b = int(input("kenar2: "))
    c = int(input("kenar3: "))

    if a == b == c:
        print("eşkenar üçgen.")
       
        elif a == b or c == b or a == c:
            print("ikizkenar üçgen")
           
        elif abs((a+b > c)and (b+c > a)and (a+c > b)):
            print("üçgen")
           
        else:
            print("geçersiz işlem")
şu şekilde yazdım ama çalıştırdığımda hata veriyor:
File "<ipython-input-24-c4acf7abecfe>", line 26
elif a == b or c == b or a == c:
^
SyntaxError: invalid syntax


Kod:
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 == c == d:
      
        print("kare")
    elif a == b and d == c or a == c and b == d and a == d and c == b:
        print("dikdörtgen")
    else:
        print("dörtgen")
      
elif işlem == "üçgen":
    a = int(input("kenar1: "))
    b = int(input("kenar2: "))
    c = int(input("kenar3: "))

    if a == b == c:
        print("eşkenar üçgen.")
      
        elif a == b or c == b or a == c:
            print("ikizkenar üçgen")
          
        elif abs((a+b > c)and (b+c > a)and (a+c > b)):
            print("üçgen")
          
        else:
            print("geçersiz işlem")
Tamam, çözdüm sorunu.
 
Son düzenleyen: Moderatör:
if a == b == c:
print("eşkenar üçgen.")

elif a == b or c == b or a == c:
print("ikizkenar üçgen")

elif abs((a+b > c)and (b+c > a)and (a+c > b)):
print("üçgen")

else:
print("geçersiz işlem")
[/CODE]
Elif anahtar kelimesini if altında kullanmak zorundasın. En baştaki seçimin yanına .lower() fonksiyonunu ekle yoksa programında daha fazla bug oluşur. Bu fonksiyon girilen her harfi küçültür böylece yalnızca bir ihtimali kontrol etmen yeterli olur.
 
Şu şekilde yazdım ama çalıştırdığımda hata veriyor.
Boşluklara dikkat et ve parantez kullan.

Sizin dediğiniz gibi olursa dikdörtgen olmuyor. Siz kullanıcının girdiği her birinin aynısı 2'li değer için dikdörtgen karşılığını döndürüyorsunuz. Kullanıcıya bir şekil vermek bu sorunların önüne geçmek için. Eğer bu şekilde olursa kullanıcı sizin hangi sırayla kenarları numaralandırdığınızı anlayamaz.
Aslında amaçlarımız farklı. Ben girilen numaralardan dikdörtgen olur mu diye sormak istiyorum. Sen numaraları direkt kullanıcıdan dikdörtgen olarak almak istiyorsun. Düşünce yapımız farklı.
 
Elif anahtar kelimesini if altında kullanmak zorundasın. En baştaki elif anahtarını if yap. En baştaki seçimin yanına .lower() fonksiyonunu ekle yoksa programında daha fazla bug oluşur.
Kod:
işlem.lower = (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 == c == d:
       
        print("kare")
    elif a == b and d == c or a == c and b == d and a == d and c == b:
        print("dikdörtgen")
    else:
        print("dörtgen")
       
elif işlem == "üçgen":
    a = int(input("kenar1: "))
    b = int(input("kenar2: "))
    c = int(input("kenar3: "))

    if a == b == c:
        print("eşkenar üçgen.")
       
    elif a == b or c == b or a == c:
            print("ikizkenar üçgen")
           
    elif abs((a+b > c)and abs(b+c > a)and abs(a+c > b)):
            print("üçgen")
           
    else:
            print("geçersiz işlem")
Kod:
işlem.lower = (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 == c == d:
      
        print("kare")
    elif a == b and d == c or a == c and b == d and a == d and c == b:
        print("dikdörtgen")
    else:
        print("dörtgen")
      
elif işlem == "üçgen":
    a = int(input("kenar1: "))
    b = int(input("kenar2: "))
    c = int(input("kenar3: "))

    if a == b == c:
        print("eşkenar üçgen.")
      
    elif a == b or c == b or a == c:
            print("ikizkenar üçgen")
          
    elif abs((a+b > c)and abs(b+c > a)and abs(a+c > b)):
            print("üçgen")
          
    else:
            print("geçersiz işlem")
Nasıl?
 
Son düzenleyen: Moderatör:
Eksiklerin var. Bir de buna göz at.

Python:
shape = input("Şekil nedir? ")

if (shape.lower() == "ucgen"):
  edge1 = int(input("Kenar 1: "))
  edge2 = int(input("Kenar 2: "))
  edge3 = int(input("Kenar 3: "))

  if ((abs(edge2 - edge3) < edge1 and edge1 < edge2 + edge3
      or abs(edge1 - edge3) < edge2 and edge2 < edge1 + edge3)
      or abs(edge1 - edge2) < edge3 and edge3 < edge1 + edge2):
    if (edge1 == edge2 == edge3):
      print("Eşkenar üçgen")
    elif ((edge1 == edge2) or (edge2 == edge3) or (edge1 == edge3)):
      print("İkizkenar üçgen")
    else:
      print("Çeşitkenar üçgen")
  else:
    print("Üçgen değildir.")
elif (shape.lower() == "dortgen"):
  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")
else:
  print("Geçersiz.")
 
elif a == b and d == c or a == c and b == d and a == d and c == b:
print("dikdörtgen")
Bu kısımda yalnızca "a==b and c==d" sorgusunu kontrol etmen yeterli. Başka ihtimal yok çünkü.
Kod:
işlem = input(str("Üçgen veya dörtgen?: ")).lower()
)

nasıl ?
Eğer bu şekilde kullanırsan, kullanıcı hangi sayıyı girerse girsin sonuç string olacağından programın hata vermeyecektir. Hemde kullanıcı dörTgen veya ÜçGen gibi ifadeler girse bile program bunları eleyebilecektir.
Eksiklerin var. Bir de buna göz at.

Python:
shape = input("Şekil nedir? ")

if (shape.lower() == "ucgen"):
  edge1 = int(input("Kenar 1: "))
  edge2 = int(input("Kenar 2: "))
  edge3 = int(input("Kenar 3: "))

  if ((abs(edge2 - edge3) < edge1 and edge1 < edge2 + edge3
      or abs(edge1 - edge3) < edge2 and edge2 < edge1 + edge3)
      or abs(edge1 - edge2) < edge3 and edge3 < edge1 + edge2):
    if (edge1 == edge2 == edge3):
      print("Eşkenar üçgen")
    elif ((edge1 == edge2) or (edge2 == edge3) or (edge1 == edge3)):
      print("İkizkenar üçgen")
    else:
      print("Çeşitkenar üçgen")
  else:
    print("Üçgen değildir.")
elif (shape.lower() == "dortgen"):
  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")
else:
  print("Geçersiz.")
Kral neden abs fonksiyonunu kullandın.
Üçgen kısmında üçgen eşitsizliğine dikkat edin. Yani iki kenarin farkı diğer kenardan küçük, iki kenarın toplamı da diğer kenardan büyük olmak zorunda.
Kral, bu kadar üzerine düşündük madem, piyasaya sürelim de millet yararlansın.
 
Son düzenleme:
Kral neden abs fonksiyonunu kullandın?
Çünkü üçgen olma şartında (üçgen eşitsizliği) farklarının mutlak değerine bakılır. Soruda da bu istenmiş zaten. Bkz;

Eğer verilen kenarlar bir üçgen belirtmiyorsa, ekrana "Üçgen belirtmiyor" şeklinde bir yazı yazın.

Buraya bir de programın bir ileri ki seviyede nasıl yazılabileceğini de atayım.

Python:
shape = input("Şekil nedir? ")

if (shape.lower() == "ucgen"):
  edges = list()

  for i in range(3):
    edges.append(int(input("Kenar " + str(i + 1) + ": ")))

  if ((abs(edges[1] - edges[2]) < edges[0] and edges[0] < edges[1] + edges[2]
      or abs(edges[0] - edges[2]) < edges[1] and edges[1] < edges[0] + edges[2])
      or abs(edges[0] - edges[1]) < edges[2] and edges[2] < edges[0] + edges[1]):

    edges = list(set(edges))
  
    if (len(edges) == 1):
      print("Eşkenar üçgen")
    elif (len(edges) == 2):
      print("İkizkenar üçgen")
    else:
      print("Çeşitkenar üçgen")
  else:
    print("Üçgen değildir.")
elif (shape.lower() == "dortgen"):
  edges = list()

  for i in range(4):
    edges.append(int(input("Kenar " + str(i + 1) + ": ")))

  edges = list(set(edges))

  if (len(edges) == 1):
    print("Kare");
  elif (len(edges) == 2):
    print("Dikdortgen")
  else:
    print("Dortgen")
else:
  print("Geçersiz.")
 
Son düzenleme:
Kod:
istenenSekil = input("Üçgen veya dörtgen?: ").lower()

if istenenSekil == "dörtgen":
    print("""
              2
        --------------
        |            |
      1 |            | 3
        |            |
        --------------
              4
        """)
    
    try:
        a = abs(int(input("1.kenarı giriniz: ")))
        b = abs(int(input("2.kenarı giriniz: ")))
        c = abs(int(input("3.kenarı giriniz: ")))
        d = abs(int(input("4.kenarı giriniz: ")))
    except ValueError:
        print("Kenar uzunlukları yalnızca sayı olabilir.")
        exit()

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

elif istenenSekil == "üçgen":
    print("""
            /\\
           /  \\
        1 /    \\ 3
         /      \\
        /        \\
        ----------
             2
    """)

    try:
        a = abs(int(input("1.kenarı giriniz: ")))
        b = abs(int(input("2.kenarı giriniz: ")))
        c = abs(int(input("3.kenarı giriniz: ")))
    except ValueError:
        print("Kenar uzunlukları yalnızca sayı olabilir.")
        exit()

    if (a + b) >= c and (a + c) >= b and (b + c) >= a:

        if a == b == c:
            print("Eş kenar üçgen.")
        elif a == b and a == c:
            print("İkiz kenar üçgen.")
        else:
            print("Normal üçgen.")

    else:
        print("Üçgen değil.")

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

Programın en son hali budur. Konu sahibinin kare ve üçgenin özelliklerinden ziyade okunabilir, optimize ve kullanıcı dostu programları nasıl yazacağını bilmeli.
 

Geri
Yukarı