Pythona ara verince en basit şeyleri dahi unuttuğumu farkettim. Mesela burada seçim yapıp a değişkeninin sonucu “python” yazısını görmek istiyorum. Ancak a yazdığımda sonuç yine “a” olarak çıkıyor. Çözümü nedir?
Çok basit. Siz karakter dizileri ile değişkenleri karıştırmışsınız. Şu şekilde yapmalısınız:
secenekler = {"a": "python", "b": "java"}
print(secenekler[input("seç: ")])
Bu şekilde istemiyorum. Siz sözlük oluşturmuşsunuz. a = “python” ise seçim yaptığımda “python” çıktısı nasıl alırım. Bunun yolunu arıyorum?
a = "python"
print(globals()[input("Seç: ")])
a = ‘python’
print(a) seklinde ‘python’ gore bilirsiniz
Arkadaş kullanıcının seçim yapmasını istemiş, siz mevzuyu yanlış anlamışsınız.
Örnek olsun diye tek değişken yazdım. İnput ile seçim yapmak istiyorum?
Çok teşekkürler siz yazınca hatırladım şimdi. Global yazarak hallediyorduk. İşte böyle ara verince unutuyoruz. Oysa geçen yıl bunlarla çok uğraşmıştım.
Değişkenleri dinamikleştirmeye çalışmayın, çünkü onlar doğası gereği statik; sözlükleri kullanın. Bence @reo’in yolu daha iyi bir yol.
Statik ve dinamik derken tam olarak ne demek istediniz?
# Şunlar statiktir:
a = 5
b = 'Merhaba'
c = 1.2
# Bunlara dinamik olarak erişemezsiniz.
# Mesela kullanıcıdan değişkenin adını alıp doğrudan erişemezsiniz.
# Tamam, `global` falan var ama dolaylı yol oluyor.
# Ama mesela sözlüklere erişebilirsiniz dinamik olarak:
sozluk = {
'a': 5,
'b': 'Merhaba',
'c': 1.2
}
# Kullanıcıdan 'a' aldık diyelim, o zaman `sozluk['a']` diye erişebiliriz.
# Aslında sizin demek istediğinizi demeye çalıştım bir nevi.
Öncelikle kullanıcının a değeri içindeki şeyi istediğini nereden biliyorsun böyle basit düşünmelisin senin ona verdiğin programın başlangıçta bir çıktı olur işte şunu yazarsan şu olur bunu yazarsan bu olur gibi input içerisine değişken adı yazılmaz. yazılsada çalışmaz çünkü çıktı ‘’ arasındadır. gördüğün gibi değişkeni şöyle bastırabilir misin ?
input()
ee
'ee' >> gördüğün gibi çıktı bu 'ee'
farzedelim ee içinde şu değer var
ee = 10
input("Bir değer giriniz") >> ee
Output;
'ee' çünkü input çıktıyı '' arasına alıp bastırdı.
print('ee') yaptı sizin 10 çıktısını alabilmeniz için
print(ee) yazmanız gerekir output;
10 olur o zaman