Re: Python Yardım

74 views
Skip to first unread message

Fatih Erikli

unread,
Nov 3, 2020, 7:17:31 AM11/3/20
to python-...@googlegroups.com
Merhaba,

# Farzadelim ki degerimiz soyle:
number = 9876

# Ilk once girilen sayiyi basamaklara ayirmak gerekiyor:
digits = list(map(int, str(number))  # [9, 8, 7, 6] seklinde bir dizi elde ettik.

# max fonksiyonu ile en buyuk rakami alabiliriz
max_digit = max(digit)

# ikinci en buyuk degeri rakamlarin oldugu listeden en buyuk degeri elimine ederek bulabiliriz
second_max_digit = max([digit for digit in digits if digit != max_digit])

# ikinci en buyuk degerin tek mi cift mi oldugunu soyle anlayabiliriz:
is_second_max_even = second_max_digit % 2 == 0

# geriye yukaridaki kosullara gore yeni bir sayi uretmek kaliyor
print(str(biggest_digget) + str(second_max_digit if is_second_max_even else 0) * 3)



On Tue, 3 Nov 2020 at 12:53, Ayça Aykutlu <aycaay...@gmail.com> wrote:
Merhaba,
4 basamaklı girilen bir sayının önce en büyük rakamını öne alıp sonra en büyük ikinci rakam tek ise o sayıyı tekrar ederek, çift ise yerine 0 yazacak bir kod yazmam gerekiyor yardımcı olabilir misiniz? 
örnek: sayı 7845 ise sayıyı 8777
 sayı 9867 ise sayıyı 9000 yapacak.

--
Bu iletiyi Google Grupları'ndaki "Python Istanbul" grubuna abone olduğunuz için aldınız.
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için python-istanb...@googlegroups.com adresine e-posta gönderin.
Bu tartışmayı web'de görüntülemek için https://groups.google.com/d/msgid/python-istanbul/f59dc018-0156-4c92-9a0d-a0792aa08262n%40googlegroups.com adresini ziyaret edin.


--

Toygar Egemen

unread,
Nov 3, 2020, 7:33:14 AM11/3/20
to Python Istanbul
Merhaba, Aşağıdaki kodumu çalıştırabilirsiniz. Random metodu ile  4 basamaklı sayı üreterek yaptım. Spesifik bir rakam isterseniz sayi ismindeki değişkene istediğiniz numarayı verebilir yada input ile kullanıcıdan sayıyı direk alabilirsiniz, İyi günler dilerim...



import random

sayi = random.randint(1000,9999) # 4 Basamaklı sayı üretir
print(sayi) # Sayıyı ekrana bastırı

sayi = str(sayi) # Tek tek üzerlerinde gezebilmek için string'e çevirdik.

listSayi = list() # Sayılarımızı bu listede ayrı ayrı toplayıp koşullarımızı üzerlerinde sorgulayacağız.

for i in sayi:
    listSayi.append(int(i)) # Elemanlarımızı tek tek döngüden geçirip, integer'a çevirip (Büyüklüğünü kontrol etmek için) listemize ekledik.


buyukSayi = max(listSayi) # Aralarında en büyük olan sayıyı bulduk
buyukSayiIndex = listSayi.index(buyukSayi) # Büyük sayının listedeki index numarasını aldık
listSayi[0],listSayi[buyukSayiIndex] = listSayi[buyukSayiIndex],listSayi[0] # En büyük sayı ile ilk sayımızın yerlerini değiştirdik.


index = 1
if listSayi[1] % 2 == 0: # Sayı çift sayıysa bu bloğa gir dedik
    for i in listSayi[1:]: # 1. index ve sonrasını al dedik.
        listSayi[index] = 0 # Hepsini 0 yap dedik.
        index += 1
else: # Sayı tek sayıysa bu bloğa gir dedik
    for i in listSayi[1:]: # 1. index ve sonrasını al dedik.
        listSayi[index] = listSayi[1] # 1. index ve sonrası komple bu tek olan sayı olsun dedik.
        index += 1

result = str() # Son olarak istediğimiz gibi düzenlenen 4 basamaklı sayımızı saklayacağımız değişkeni oluşturduk

for i in listSayi:
    result += str(i) # Listede tek tek gezinerek değişkene string ifade olarak rakamlarımızı ekledik

result = int(result) # Stringimizi integer'a çevirdik.

print(result) # ve sonuç...

3 Kasım 2020 Salı tarihinde saat 15:17:31 UTC+3 itibarıyla fatiherikli şunları yazdı:

Toygar Egemen

unread,
Nov 3, 2020, 1:41:13 PM11/3/20
to python-...@googlegroups.com
Ufak bir düzeltme yapıyorum. 2. Büyük sayıyı hesaplamamışım.

Buyrun,


import random

sayi = random.randint(1000,9999)
print(sayi)

sayi = str(sayi)

listSayi = list()

for i in sayi:
    listSayi.append(int(i))


buyukSayi = max(listSayi)
buyukSayiIndex = listSayi.index(buyukSayi)
listSayi[0],listSayi[buyukSayiIndex] = listSayi[buyukSayiIndex],listSayi[0]

ikinciBuyukSayi = max(listSayi[1:])

index = 1
if ikinciBuyukSayi % 2 == 0:
    for i in listSayi[1:]:
        listSayi[index] = 0
        index += 1
else:
    for i in listSayi[1:]:
        listSayi[index] = ikinciBuyukSayi
        index += 1

result = str()

for i in listSayi:
    result += str(i)

result = int(result)

print(result)

Toygar Egemen <toygare...@gmail.com>, 3 Kas 2020 Sal, 15:33 tarihinde şunu yazdı:
Bu tartışmayı web'de görüntülemek için https://groups.google.com/d/msgid/python-istanbul/3c132266-3277-4204-b1c5-4ea6267623d1n%40googlegroups.com adresini ziyaret edin.

yetkin ozturk

unread,
Nov 3, 2020, 3:11:50 PM11/3/20
to python-...@googlegroups.com
Selam Toygar,

max herkesin kullandigi builtin bir method ama bunun sadece numeric degerler icin calistigini dusunmek yanlis olur. cunku herhangi comparable degeri iceren iterable'dan max degerini alabilirsin.

yani max("846382") "8" , max("abcdef") f dondurur diye dusunuyorum :) 

bir liste olusturmak icin onerilen yontem [] dogrudan kullanmaktir, kucuk bir ayrinti ama list() contructoru bytecode olarak daha buyuktur. ayni sekilde tuple icin () onerilir. olusan bytecodelari karsilastirabilirsin.

iteration icinde listeye append etmek kotu ve kacinilmasi gereken bir seydir ve list comprehension ile liste gerekiyorsa olusturulur.

index tanimlamadan for in seklinde bir cok iterasyon problemi cozulebilir ama index gercekten gerekliyse enumarate cagirisi ile (index,val) pairleri uzerinden donguyu yazmak dogru olan yontemdir.

gozume takildi soylemem gerekir diye dusundum. 




Toygar Egemen

unread,
Nov 3, 2020, 3:17:10 PM11/3/20
to python-...@googlegroups.com
Selam Yetkin, 

Bilgilendirmelerin ve düzeltmelerin için çok teşekkür ederim. Bir dahaki sefere bu tarz işlemlerde bahsettiğin bilgileri göz önünde bulunduracağım :)

3 Kas 2020 Sal, saat 23:11 tarihinde yetkin ozturk <yetk...@gmail.com> şunu yazdı:

Savaş Hasçelik

unread,
Nov 3, 2020, 4:16:31 PM11/3/20
to python-...@googlegroups.com
Merhabalar
Konuyla azda olsa ilgili olduğundan bağlantısını vereceğim repo'ya göz atmanızı tavsiye ediyorum. Temel konularda da olsa python'la ilgili güzel ipuçları var. Çay içerken bile göz atılabilir.☺

pdf->
SAVAŞ HASÇELİK

Bilgisayar Parantezinde Her Şey


Toygar Egemen <toygare...@gmail.com>, 3 Kas 2020 Sal, 23:17 tarihinde şunu yazdı:
Reply all
Reply to author
Forward
0 new messages