def countdown(integer:int,string:str):
for i in range(integer,0,-1):
print(i,".",end = "")
print("",string)
Bu kodu nasıl tek satırda yazabilirim ?(Lambda ile denedim ancak pek bilmedeiğimden başaramadım.)
def countdown(integer:int,string:str):
for i in range(integer,0,-1):
print(i,".",end = "")
print("",string)
Bu kodu nasıl tek satırda yazabilirim ?(Lambda ile denedim ancak pek bilmedeiğimden başaramadım.)
Sanırım başardım
x = lambda integer,string : [[print(i,".",end = "",sep = "") for i in range(integer, 0, -1)],print("",string)]
Merhaba.
Hmm, tam olmamış sanki. Hem dönüş değeri de None
değil. Bunu bir deneyin istiyorsanız:
x = lambda integer,string : [print(i,".",end = "") for i in range(integer, 0, -1)] and print("",string)
Yeni başladım pek bilgim yok ancak None dönmesi kötü birşey değil mi ? ben printin içine yazmıyorum fonksiyonu direk normal bir şekilde çalıştırıyorum ve none dönmüyor.
Kötü veya iyi nasıl diyeceğiz bilemiyorum, amaca bağlı. Eğer biz hiçbir şey döndürmezsek None
döner. Eğer fonksiyonumuzun bir değer döndürmesini istiyorsak o zaman istediğimiz değeri döndürürüz.
Evet, çünkü bir şey döndürmüyor (yani None
döndürüyor, ama None
değerleri etkileşimli kabukta ekrana yazılmaz. Sadece None
yazıp entere bassanız bile bir şey yazılmamış olur), döndürmesine gerek var mı? Sizin asıl kodunuz da döndürmüyordu (yani None
döndürüyordu), o yüzden bunu o şekilde yazdım.
Lambda ile yazamazsin (type hintleri verilmiyor) ama gerek de yok:
def countdown(integer:int,string:str):
[print(i,".",end = "") for i in range(integer,0,-1)];
print("",string)
Ama tek satirda yazmak cok sacma, niye boyle bir sey istiyorsun?
Tek expression olarak yazmak cok daha faydali bir sey (ve lambda kullanmayi mumkun kiliyor).
def countdown(integer:int, string:str):
print(" .".join(list(map(str, range(integer,0,-1))) + [" " + string]))
Ama tabi side effect’leri olan (–i gectim, sadece side effect’lerden olusan) bir fonksiyonu tek expression’a indirmeye calismak da sacma bir caba.