Jump to content
Aket-Atum

Python string format sorusu

Öne çıkan mesajlar

§ 24 Dec 2019, 12:22

Şu adresteki tutolara bakıyorum ama şu en aşağıdaki kısım biraz kafamı karıştırdı.

 

data = ("John", "Doe", 53.44)
format_string = "Hello %s %s. Your current balance is $%s."

print(format_string % data)

% ile string formata bakıp haa kolaymış diyordum ama şurada ters köşe oldum. 

 

Şimdi, bu %s listin içinde dönüp sırasıyla her itemı mı koyuyor oraya? Sanki öyle gibi geldi biraz. Doğru anlamış mıyım?

 

Peki diyelim sadece birinci ve üçüncü itemı almak istediğimde ne yapacağım? Başka bir editorde data[0], data[2] gibi denedim de olmadı pek.

Aket-Atum tarafından düzenlendi

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş
§ 24 Dec 2019, 13:13

% (data[0], data[2]) 

 

Dersen olur anladigin gibi yapiyor ama bu formati kullanma named Formatting daha explicit daha iyi

 

”{count} results”.format(count=5)

 

gibi

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş
§ 24 Dec 2019, 13:22

iki yöntem de eskidi, python 3.6'dan itibaren şunu kullanabilirsiniz;

name, surname, balance = data

print(f"Hello {name} {surname}. Your current balance is {balance}.")

 

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş
§ 24 Dec 2019, 13:43

Bu name, surname,balance = data tanımı için datanın önceden 

data = ("John", "Doe", 53.44)

diye tanınlanmış olması gerekiyor sanırım?

 

Verilen sıraya göre de atamaları yapıyor herhalde?

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş
§ 24 Dec 2019, 14:04

evet verdiğin örneğe göre yazdım. destructuring/unpacking olarak geçer bu feature.

zeawee tarafından düzenlendi

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş
§ 24 Dec 2019, 19:18

print(f"Hello {name} {surname}. Your current balance is {balance}.")

Bu yeni yontem baya basarili ama tum yazdiracaklarini degiskenlere koymak zorunda kaliyorsun. Ama genelde programlar sittin tane parametre alacağı için ve bunları yazdırmak için kullanacağın zaman böyle tek tek değişkenlerle uğraşmak kasıyor. Onun yerine format_map kullanmak daha kolay. Hem parametreleri toplu olarak tutabilirsin hem de benzer bir yapiyi her sey icin kullanabilirsin.

kv = {'a': 'z', 'b': 'y'}

print('asd {a} asd'.format_map(kv))

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş
§ 24 Dec 2019, 21:07
1 saat önce, riglous dedi ki:

print(f"Hello {name} {surname}. Your current balance is {balance}.")

Bu yeni yontem baya basarili ama tum yazdiracaklarini degiskenlere koymak zorunda kaliyorsun. Ama genelde programlar sittin tane parametre alacağı için ve bunları yazdırmak için kullanacağın zaman böyle tek tek değişkenlerle uğraşmak kasıyor. Onun yerine format_map kullanmak daha kolay. Hem parametreleri toplu olarak tutabilirsin hem de benzer bir yapiyi her sey icin kullanabilirsin.

kv = {'a': 'z', 'b': 'y'}

print('asd {a} asd'.format_map(kv))

hayir degiskene almak zorunda degilsin, {} arasina aldigin kisim evaluate ediliyor;

print(f'asd {kv["a"]} asd')

yapabilirsin.

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş
§ 25 Dec 2019, 00:18

Yapabilirsin tabi ama temiz gozukmuyor. 

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Yorum yazmak için üye olun veya giriş yapın

Yorum yazmak için üye olmanız lazım

Üye ol

Kayıt olun ve aramıza katılın!

Yeni bir hesap oluştur

Giriş yap

Zaten üyemiz misin? O halde giriş yap

Hemen giriş yap

×
×
  • Yeni Oluştur...