Çözüldü Or bağlacı neden true değeri veriyor?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Sam Bridges

Hectopat
Katılım
6 Nisan 2020
Mesajlar
732
Makaleler
2
Çözümler
1
Yer
İzmir
Daha fazla  
Cinsiyet
Erkek
Python:
# exp dist : l.e^(-l.x)
# F(X) of exp dist : 1-e^(-l.x)

from math import e

option = input("Enter the type of the probability you want to calculate; 'Smaller', 'Greater' or 'Between': ")
l = float(input("Enter lambda: "))

if option == "Smaller" or "Greater":
    x = float(input("Enter x: "))

    result = 1 - (e ** ((-l) * x))
 
    if option == "Greater":
        result = 1 - result

else:
    xs = input("Enter xs, seperate them with comma. Ex. '3,7': ")

    xs = xs.split(",")
    x1 = xs[0]
    x2 = xs[1]

    print(x1)
    print(x2)

Merhaba, burada kodu çalıştırıp "Between" yazınca if bağlacı olan kısmı devreye alıyor; neden? Çok saçma geldi bana. Gece gece algılarım açık olmayabilir ama iki değer de sanırım true değil. Herkese çok teşekkür ederim.

option == ekleyince çözdüm

Çözdüm, ancak bir yeri anlamadım. Neden bu halde bırakınca or bağlacından true değeri geliyor?
 
İki koşulda da if bloğuna girilir, ancak ikinci koşulda sadece "Greater" string'i yazılmıştır ve bu string her zaman True olarak değerlendirilir. Bu yüzden de her durumda if bloğu çalışır, şu şekilde düzeltirsen sorun çözülür;
Python:
if option == "Smaller" or option == "Greater" :

ya da böyle de yazabilirsin;
Python:
if option in ["Smaller", "Greater"]:
 
option == "Smaller" kısmı false döndürüyor fakat Python da if x yazarsanız ve x boş bir değer değer değilse True döndürür. O yüzden "greater" yazısı boş bir değer olmadığından True döndürüyor ve False or True durumundan ötürü ana durum True oluyor.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…