Kullanıcıdan inputları tek satırda alma

Kullanıcı 3 sayı belirleyecek ex: a , b , c ve bunların toplamlarını girecek a+b,a+c,b+c,a+b+c ve python kullanıcının sayılarını hesaplayacak. Fakat şuanlık bilmediğim inputları tek satırda almak ve outputu tek satırda vermek. yani şu şekilde input : 3 6 5 4 output : 2 1 3 fakat benim kodumda şu şekilde :
3
6
5
4

output:
2
1
3
bunları nasıl tek satırda alıp çıktı verebilirim

Kod :


a = int(input(""))

b = int(input(""))

c = int(input(""))

d = int(input(""))

2<=a+b+c+d<=10^9

if (a>b) and (a>c) and (a>d):

    buyuk = a

elif (b>a) and (b>c) and (b>d) :

    buyuk = b

elif (c>a) and (c>b) and (c>d) :

    buyuk = c

elif (d>a) and (d>b) and (d>c) :

    buyuk = d

if (buyuk-a>0):

    print(buyuk-a)

if (buyuk-b>0):

    print(buyuk-b)

if (buyuk-c>0):

    print(buyuk-c)

if (buyuk-d>0):

    print(buyuk-d)

Kodunuzu:
-```python

-```
şeklinde atarsanız daha okunaklı olur.

Yaptım hocam, teşekkürler

input ekrana bir şey yazmayacaksa argüman vermeye gerek yok.

Bu işlem için ilk 3 veri yeterli, a+b+c’nin bilinmesine gerek yok.

Kodun bu kısmı hiçbir şey yapmıyor, bir if’in içinde değil.

Kullanıcıdan alınan girdi str.split ile bir listeye döndürülebilir:

>>> input().split(" ")
1 2 3
['1', '2', '3']

Burada gereğinden fazla sayı girilmesi durumunu size bırakıyorum.

Bu listenin uzunluğu 3 ise tek satırda 3 farklı değişkene atanabilir:

a_b, a_c, c_b = input().split(" ")

Daha sonra hepsi int’e çevrilir:

a_b = int(a_b)
a_c = int(a_c)
c_b = int(c_b)

İşlemler yapılır:

a_eksi_c = a_b - c_b
a_eksi_b = a_c - c_b

a = (a_eksi_b + a_b) / 2
b = a_b - a
c = c_b - b

print kendisine verilen argümanları aralarına boşluk koyarak yazar:

print(a, b, c)

Hocam evet a.b.c yi bulmak için a+b+c yi bilmeye gerek yok fakat hikayede öyle yapılmış olduğunu varsaydığım için öyle istedim. Bir de şunu sorayım buradaki kodda 2<=a+b+c+d<=10^9 girilen sayıların toplamının bu aralıkta olmasını istiyorum bunu nasıl yazabilirim bu yazdığım ifade bunu yerine getirmiyor mu ? Sanırım yerine getirmiyor if böyleyse devam et böyle değilse dur demem lazım sanırım

Yani kullanıcı a+b+c yi de giriyor ve rastgele sırada girdiği için onu da almam gerekecek onu açıklamak istedim :slight_smile:

Sınır koymanızın sebebi ne ki?

Bu satır True veya False oluyor ama bu değer hiçbir yerde kullanılmıyor.

Evet. Şart sağlanmıyorsa import sys; sys.exit() diyerek programı bitirebilirsiniz, veya işlemin geri kalan kısmını o if içine koyarsınız.

Bir değişken daha eklersiniz.

O zaman neyin a neyin b olduğunu bulamayız.

a, b, c, d = input().split(" ")



if (a>b) and (a>c) and (a>d):
    buyuk = a
elif (b>a) and (b>c) and (b>d) :
    buyuk = b
elif (c>a) and (c>b) and (c>d) :
    buyuk = c
elif (d>a) and (d>b) and (d>c) :
    buyuk = d




if (buyuk-a>0):
    print(buyuk-a)

if (buyuk-b>0):
    print(buyuk-b)

if (buyuk-c>0):
    print(buyuk-c)

if (buyuk-d>0):
    print(buyuk-d)
  • Bizden zaten a b c yi bulmamızı istemiyor a b c yi rastgele sıralamamızı istiyor. Burada hatalı yaptığım nedir?

Ne yaptığınızı anlamadım ki, benim verdiğim kodu niye kullanmıyorsunuz?

Ayrıca en büyük değeri şöyle de hesaplayabilirsiniz:

buyuk = max(a, b, c, d)
a, b, c, d = input().split(" ")



a = int(a)
b = int(b)
c = int(c)
d = int(d)

buyuk = max(a, b, c, d)


m_a = buyuk - a
m_b = buyuk - b 
m_c = buyuk - c
m_d = buyuk - d


if (m_a>0) and (m_b>0) and (m_c>0) and (m_d==0):
    print(m_a, m_b, m_c)

if (m_a>0) and (m_b>0) and (m_c==0) and (m_d>0):
    print(m_a, m_b, m_d)

if (m_a>0) and (m_b==0) and (m_c>0) and (m_d>0):
    print(m_a, m_d, m_c)

if (m_a==0) and (m_b>0) and (m_c>0) and (m_d>0):
    print(m_d, m_b, m_c)


Hallettim hocam kullanıcı rastgele belirlediği sayıların toplamını girecek ve kod da bu sayıları rastgele sıralayacak. Çok teşekkürler. Sanırım çok az kod bildiğimden zorlandım :slight_smile: Sınavdan sonra syntax öğrenmek işime yarayacaktır.

Merhaba,
Yanlış anlamadıysam tek satırda aldığınız 3 bilgiyi ayrı ayrı kullanmak istiyorsunu. Şunu deneyebilir misiniz;

giriş=input("Sayıları boşluk bıakarak girin : ")
a,b,c =giriş.split()