[Çözüldü] str and int hatası

Başlatan marslı, 20 Ekim 2016 - 21:28:53

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

marslı

Merhaba arkadaşlar.
Python ile bir değişken belirledim. İnternetten bir numara çekiyor. ve değişken olarak atıyor.
ben bunu
print "Numara: " + (degisken)
seklinde kullandığımda aşağıdaki hatayı alıyorum. ne yapabilirim
Alıntı YapTypeError: cannot concatenate 'str' and 'int' objects

QuackWave

#1
*Yazım hatası.'Numara: 'adlı 'string' değeri ile "degisken"e atadığın 'integer' değerini yan yana hatalı bir şekilde getirmişsin.
Bir de şöyle yapmayı dene
print ("Numara : " , degisken)
Bu arada parantezleri kullanmamışsın.Parantezleri kullanmayı dene,olmazsa üstte yazdığım kodu herhangi bir zorunluluğun yoksa dene.

marslı

Sonuç hep 0 oluyor


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 21 Ekim 2016 - 14:10:45

Alıntı yapılan: marslı - 21 Ekim 2016 - 14:10:17
Sonuç hep 0 oluyor
çıktısı ise şöyle
Alıntı Yap('Numara:', 0)

travego0403

Python 3 kullanıyorsan şunu kullanablirsin.
print("Numara: {0}".format(degisken))
Yok ben eski usul yazıcam dersen
print ("Deneme"+str(degisken))

Hata almanın nedeni string bir degiskenle int degiskeni toplamaya çalışman. Eğer 0 sonucu alıyorsan degisken içeriği sıfırdır. Sadece değişkeni yazdırdığın zaman sonuç ne oluyor.
print(degisken)
"Matematik bir dildir ve bu dilde şairlere fizikçi denir." Richard Feynman

marslı

Python2 kullanıyorum. Değişken içeriği sıfır değil numara var ama sonuç sıfır çıkıyor.
yine olmadı

siberoloji

type(degisken)
ne sonuç veriyor?

marslı

Yine olmadı
Aslında yapmağım şey şu. os.system() ile komut çalıştırıyorum. ve bunu değişken olarak atıyorum. print yanına da bu değişkeni çağırıyorum.

QuackWave

os.systems'e atadığın değeri integer'a çevirdin mi?
Çıktıları rica etsem alabilir miyim?

ShangriLa

os.system calistirilan komutun cikis degerini doner. Bir sayiyi da str fonksiyonuyla stringe cevirebilirsin. Örnek:


import os

cikis_degeri = os.system('uname')
print "Numara: " + str(cikis_degeri)
Ubuntu Mate Trusty

marslı

@ShangriLa yine olmadı çıktısı
Alıntı YapLinux
Numara: 0
@QuackWave bir de onu deneyeyim. Nasıl yapıyoruz acaba

QuackWave

#10
İnteger'a çevir üstteki örnekte yazan str yerine int yaz.

ShangriLa

#11
marslı tam olarak yapmak istediğin ne?

Komut çıktısını mı almak istiyorsun? os.system zaten integer dönüyor, tekrar integer'e çevirmeye gerek yok.
Ubuntu Mate Trusty

marslı

Tam olarak yapmak istediğim şey şu;
bir değişken atıyorum ve bu değişkeni os.system() le belirliyorum. Daha sonra belirlediğim deişkeni print ile yazdırmak istiyorum.
Alıntı Yapimport os
degisken = os.system("python numara.py -T")
print Numara: + degisken
Normalde bu şekilde çalışıyordu ama bir kaç sitede rakamlar olduğu için yansıtmadığını söylemiş.
os.system çıktısı rakamlardan ibaret.

ShangriLa

Benim sana verdiğim örnek ne yapıyor?

Bana "python numara.py -T" komutundan gelecek değeri almak istiyormuşsun gibi geldi, os.system'den dönen değerdense, doğru mu?
Ubuntu Mate Trusty

marslı

Evet "python numara.py -T" komutundan gelen değeri numara yazısının yanına yazdırmak istiyorum. Verdiğiniz örnek 0 döndürüyor diye

QuackWave

#15

import os
isim = "Numara: "
degisken = os.system("python numara.py -T")
return isim
print (isim) + str(degisken))

Açıkçası çok fark yok ama bazı farklar değiştiriyor ben py2'yi bilmediğim için sıkıntı çıkarabiliyor.

marslı


ShangriLa

marslı onu popen ile yapıyorsun. Örneğin:


import os

komut_ciktisi = os.popen("uname -a").read()
print "Calisan linux surumu: " + komut_ciktisi
Ubuntu Mate Trusty

marslı

Bu kez de ekran görüntüsü alma aracı gibi bir şey çıktı. tıkladığın yerin görüntüsünü alıyor.
Terminalde ki çıktı ise şu şekilde.

Alıntı Yap./1.py: satır 3: beklenmeyen dizgecik `(' yakınında sözdizimi hatası
./1.py: satır 3: `komut_ciktisi = os.popen("uname -a")'

ShangriLa

marslı yanlış yapıştırmıştırsın. Programın tamamını at, ben örneği deneyip öyle attım.
Ubuntu Mate Trusty

marslı

@ShangriLa Yeni bir python dosyasında denemiştim ilk satıra #!/usr/bin/env python eklemeyi unutmuşum oyüzden çalışmamış.
Teşekkür ederim hepinize soruma çözüm buldum. :)