Ödevime yardım edebilecek olursa cidden çok mutlu olurum

1-a arasındaki, haneleri(rakamları) toplamı tek olan tamsayıların listesini alt alta txt dosyasına yazan programı yazın. Buradaki a değeri kullanıcı tarafından alınan en fazla 2 basamaklı tamsayıdır.

Örnek:

Klavyeden girilen a sayısı = 67 olsun.
1 = 1 tek sayı olduğu için dosyaya yazılır.
2 = 2 çift sayı olduğu için dosyaya yazılmaz.
….
10 = 1 tek sayı olduğu için dosyaya yazılır.
11 = 2 çift sayı olduğu için dosyaya yazılmaz.

20 = 2 çift sayı olduğu için dosyaya yazılmaz.
21 = 3 tek sayı olduğu için dosyaya yazılır.

sevgili hocalarım kardeşlerim abilerim bu şekilde bir ödevim var online eğitimde kaydedilmemiş dersi izleyemedim de 20lik diş ağrısı yüzünden bir yardım ederseniz çok mutlu olurum tek bu kaldı puan kırılsın istemiyorum ödevden

Aşağıdaki kodları inceleyen isterseniz.

sayi = input("İki basamaklı bir sayı giriniz: ")
while not len(sayi) < 3 or not sayi.isnumeric():
    sayi = input("İki basamaklı bir sayı giriniz: ")
with open("sonuc.txt", "w") as dosya:
    for i in range(int(sayi)):
        if sum(int(j) for j in str(i)) % 2 != 0:
            dosya.write(f"{i}\n")
1 Beğeni

Bende bunu yazıyordum

def sayı(a):
	if len(str(a)) == 2:
		b = str(a)
		topla = int(b[0]) + int(b[1])
		
		if topla != (0,2,4,6,8,10,12,14,16,18,20):
			print("done")
			dosya = open("Ödev.txt","a")
			dosya.write(str(topla)+"\n")
		
		else:
			print("Bu sayının rakamları toplamı 2")
	
	else:
		topla = a

		if topla != (0,2,4,6,8,10,12,14,16,18,20):
			print("done")
			dosya = open("Ödev.txt","a")
			dosya.write(str(topla)+"\n")
		
		else:
			print("Bu sayının rakamları toplamı 2")

a = int(input("Lütfen Bir ya da iki basamaklı bir sayı giriniz:"))
if len(str(a)) == 3:
	print("Bu sayı 3 basamaklı")
else:
	sayı(a)

Tabi biraz uzun oldu.

def write_odd_sum_numbers(stop, file_path): open(file_path, 'w').writelines([f'{i}\n' for i in range(1, stop) if sum(int(c) for c in str(i)) % 2])

hehe

1 Beğeni

Kullanıcı girişini kontrol etmekte ve dosyayı kapatmakta fayda var:

with open(".txt", "w") as f:
    (lambda x: f.writelines("\n".join(str(i) for i in range(1, int(x)) if sum(map(int, str(i)))%2)) if len(x) < 3 and x.isnumeric() else print("Giriş en fazla iki basamaklı bir tam sayı olmalıdır."))(input())

Kod düzgün çalışmıyor, 15 girildiğinde dosyaya sadece 6 yazıldı. Ayrıca şu bölüm sandığınız gibi çalışmıyor:

Neden oluyor bilmiyorum ama çözümünü biliyorum.

if topla != (0,2,4,8,10,12,14,16,18,20) and topla != 6:

Bu kod sadece türü int olan topla değişkeninin bir tuple'a veya 6'ya eşit olup olmadığına bakıyor. Bence istediğiniz şey bu değil.

Ayrıca 15 girdisindeki 6 çıktısı 1 + 5'dan geliyor.

1 Beğeni