Kullanıcıdan istenilecek n değeri için şekildeki gibi çıktı verecek programı verebilirmisiniz.
sayı basamakları sağa hizalı olacak.
adet=int(input("sayı:"))
print("*"*30)
for i in range(1,adet):
print(" "*(adet-i),end="")
for j in range(i,0,-1):
print(j,end="")
print("")
3 Beğeni
Şöyle de yapabilirsiniz.
def f(n):
liste = [str(i) for i in range(n)]
for i in liste:
string = " " * (n - 1 - int(i))
print(string + "".join(reversed(liste[0:int(i) + 1])))
# Örnek
f(10)
0
10
210
3210
43210
543210
6543210
76543210
876543210
9876543210
4 Beğeni
teşekkürler sağolun.
teşekkürler sağolun…
while True:
try:
adet=int(input("sayı:"))
except ValueError as Hata:
print("Yalnızca sayı girmelisiniz.")
continue
print("*"*30)
for i in range(1,adet+1):
print(" "*(adet-i),end="")
for j in range(i,0,-1):
print(j,end="")
print("")
Böyle birşey yaptım ben de arkadaşın çözümüne ek olarak.
Ancak sanırım bu kodlar n=9 dahil güzel çalışıyor. 9’ dan sonra sağa doğru da birer kayma gerçekleşiyor. Bunun algoritması sanırım daha karışık. Sabitlemek adına ilk başta 10 değeri için yani 2 basamaklı değerler, sonra da 3-4-5-6-… basamaklı değerler için kodlar düzenlenmeli. Ve sanırım bu matematikteki toplam fark formülü ile hesaplanabilir. Ancak kullanıcı sanırım çok cüzi rakamlar gireceğinden pek kod kalabalığına gerek yok.
1 Beğeni
eyvallah sağolasın
1 Beğeni
Onun da çözümü şöyle:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
def f(n):
liste = [str(i) for i in range(n)]
uzunluk = "".join(liste)
for i in liste:
frmt = "".join(reversed(liste[0:int(i) + 1]))
string = " " * (len(uzunluk) - len(frmt))
print(string + frmt)
f(12)
0
10
210
3210
43210
543210
6543210
76543210
876543210
9876543210
109876543210
11109876543210
1 Beğeni
rakamların arasını birer boşluk koyabilirmiyiz, peki şöyle
Evet koyabiliriz:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
def f(n):
liste = [str(i) for i in range(n)]
uzunluk = " ".join(liste)
print(uzunluk)
for i in liste:
frmt = " ".join(reversed(liste[0:int(i) + 1]))
string = " " * (len(uzunluk) - len(frmt))
print(string + frmt)
f(12)
0
1 0
2 1 0
3 2 1 0
4 3 2 1 0
5 4 3 2 1 0
6 5 4 3 2 1 0
7 6 5 4 3 2 1 0
8 7 6 5 4 3 2 1 0
9 8 7 6 5 4 3 2 1 0
10 9 8 7 6 5 4 3 2 1 0
11 10 9 8 7 6 5 4 3 2 1 0
4 Beğeni