Çözüldü Python kodumdaki hata nedir?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Mertrt_01

Hectopat
Katılım
23 Kasım 2020
Mesajlar
489
Makaleler
1
Daha fazla  
Cinsiyet
Erkek
Yazılımda daha ilk günüm, bazı yerlerden edindiğim bilgilere göre bir şey yazmayı düşündüm ve şu kodu yazdım:
Kod:
def sonuc_hesaplayıcı():
 global sonuc
 global sayı1_num
 global sayı2_num
    sonuc = ((sayı1_num) + (sayı2_num))


def sonuc_gosterici():
print("Sonuç", sonuc)

def user_input():
print("Sayı giriniz")
 try:
sayı1_num = int(input())
except ValueError:
print("Sayı giriniz")

print("Sayı giriniz")
 try:
sayı2_num = int(input())
except ValueError:
print("Sayı giriniz")
sayı2_num = input()

user_input()
sonuc_hesaplayıcı()
sonuc_gosterici()

Çalıştırdıktan sonra sayı1'i giriyorum, sonra sayı2'de de sorunsuz alıyor değeri, ondan sonra şöyle bir hata veriyor:
Traceback (most recent call last):
  File "C:\Users\Pc\PycharmProjects\pythonProject1\main.py", line 28, in <module>
    sonuc_hesaplayıcı()
  File "C:\Users\Pc\PycharmProjects\pythonProject1\main.py", line 5, in sonuc_hesaplayıcı
    sonuc = ((sayı1_num) + (sayı2_num))
NameError: name 'sayı1_num' is not defined

Process finished with exit code 1

Ne yapmam gerek?
 
Son düzenleyen: Moderatör:
Çözüm
o

Olmuyor, boşlukları düzelttim, sonra birkaç değişiklik yaptım, kırmızı uyarılar gitti. Run butonuna basıyorum çalışmıyor, 2-3 defa sayı giriyorum rastgele ondan sonra tam çalışacakken sayı1 tanımlanmamış diyor, neresi tanımlanmamış kabak gibi ortada işte
Python:
sayi1_num = 0
sayi2_num = 0
sonuc = 0

def sonuc_hesaplayıcı():
    global sonuc
    sonuc = ((sayi1_num) + (sayi2_num))

def sonuc_gosterici():
    print("Sonuç", sonuc)

def user_input():
    global sayi1_num
    global sayi2_num
   
    print("Sayı giriniz")
    try:
        sayi1_num = int(input())
    except ValueError:
        print("Sayı giriniz")

    print("Sayı giriniz")
    try:
        sayi2_num = int(input())
    except ValueError:
        print("Sayı giriniz")

user_input()
sonuc_hesaplayıcı()
sonuc_gosterici()

Pythonda global kullanımı değişikmiş. global ifadesi olmadan en tepede tanımladığınız değişkenleri fonksiyon içerisinde değiştirmek istiyorsanız global kullanmanız gerek. Değeri değiştirmeyip sadece okuyacaksanız buna gerek yok. Daha detaylı anlatım;

Bu arada yapmak istediğiniz çok daha basit yollu yapılabiliyor.
Python:
x = int(input("ilk sayi: "))
y = int(input("ikinci sayi: "))
print(f"iki sayi toplami: {x + y}")
Global değişkenleri fonksiyon içinde değil en tepede tanımlamanız gerek.
global sonuc
global sayı1
global sayı2
sayı1 = input()
sayı2 = input()

def sonuc_hesaplayıcı():
sonuc = (sayı1 + sayı2)

def sonuc_gosterici():
print("Sonuç", sonuc)


user_input()
sonuc_hesaplayıcı()
sonuc_gosterici()

Yine çalışmıyor. unexpected indent yazıyor ve sayı1'i gösteriyor.
 
o
Indent error veriyor. Boşluklara dikkat edin.
Olmuyor, boşlukları düzelttim, sonra birkaç değişiklik yaptım, kırmızı uyarılar gitti. Run butonuna basıyorum çalışmıyor, 2-3 defa sayı giriyorum rastgele ondan sonra tam çalışacakken sayı1 tanımlanmamış diyor, neresi tanımlanmamış kabak gibi ortada işte
 

Dosya Ekleri

  • Ekran görüntüsü_20221211_194502.png
    Ekran görüntüsü_20221211_194502.png
    146,4 KB · Görüntüleme: 20
https://chat.openai.com/chat

Buradan yapay zekaya hatanın nerede olduğunu sorabilirsiniz. Ne kadar yardımı olur bilmem ama denemeye değer :)

Yapay zekanın dediğine göre:

"Bu hata, sayı1_num ve sayı2_num değişkenlerinin tanımlanmadığını göstermektedir. Bu değişkenleri user_input fonksiyonunun içinde tanımladınız, ancak bu değişkenlerin global olduğunu belirtmediniz. Bu nedenle, bu değişkenler sonuc_hesaplayıcı fonksiyonu içinde tanımlanamamaktadır ve hata vermektedir.

Aşağıdaki kod parçacığında, global anahtar kelimesini kullanarak sayı1_num ve sayı2_num değişkenlerini global olarak tanımladım ve bu değişkenleri kullanarak bir sonuç hesapladım:


Python:
def sonuc_hesaplayıcı():
    global sonuc
    global sayı1_num
    global sayı2_num

    # Burada, sayı1_num ve sayı2_num değişkenlerini global olarak tanımladık
    # Bu sayede, user_input fonksiyonu içinde tanımlanan değişkenleri burada
    # kullanabileceğiz

    sonuc = sayı1_num + sayı2_num

def sonuc_gosterici():
    print("Sonuç:", sonuc)

def user_input():
    global sayı1_num
    global sayı2_num

    # Burada da aynı şekilde, sayı1_num ve sayı2_num değişkenlerini global
    # olarak tanımladık

    print("Sayı giriniz:")
    try:
        sayı1_num = int(input())
    except ValueError:
        print("Geçerli bir sayı giriniz!")

    print("Sayı giriniz:")
    try:
        sayı2_num = int(input())
    except ValueError:
        print("Geçerli bir sayı giriniz!")

user_input()
sonuc_hesaplayıcı()
sonuc_gosterici()

Bu kod parçacığını çalıştırdığınızda, kullanıcıdan iki sayı alıp, bu sayıların toplamını hesaplayarak ekrana yazdıracaktır."

Edit: Derleyicide test ettim verdiğim kod sorunsuz çalışıyor.
 
Son düzenleme:
o

Olmuyor, boşlukları düzelttim, sonra birkaç değişiklik yaptım, kırmızı uyarılar gitti. Run butonuna basıyorum çalışmıyor, 2-3 defa sayı giriyorum rastgele ondan sonra tam çalışacakken sayı1 tanımlanmamış diyor, neresi tanımlanmamış kabak gibi ortada işte
Python:
sayi1_num = 0
sayi2_num = 0
sonuc = 0

def sonuc_hesaplayıcı():
    global sonuc
    sonuc = ((sayi1_num) + (sayi2_num))

def sonuc_gosterici():
    print("Sonuç", sonuc)

def user_input():
    global sayi1_num
    global sayi2_num
   
    print("Sayı giriniz")
    try:
        sayi1_num = int(input())
    except ValueError:
        print("Sayı giriniz")

    print("Sayı giriniz")
    try:
        sayi2_num = int(input())
    except ValueError:
        print("Sayı giriniz")

user_input()
sonuc_hesaplayıcı()
sonuc_gosterici()

Pythonda global kullanımı değişikmiş. global ifadesi olmadan en tepede tanımladığınız değişkenleri fonksiyon içerisinde değiştirmek istiyorsanız global kullanmanız gerek. Değeri değiştirmeyip sadece okuyacaksanız buna gerek yok. Daha detaylı anlatım;

Bu arada yapmak istediğiniz çok daha basit yollu yapılabiliyor.
Python:
x = int(input("ilk sayi: "))
y = int(input("ikinci sayi: "))
print(f"iki sayi toplami: {x + y}")
 
Son düzenleme:
Çözüm
Python:
sayi1_num = 0
sayi2_num = 0
sonuc = 0

def sonuc_hesaplayıcı():
    global sonuc
    sonuc = ((sayi1_num) + (sayi2_num))

def sonuc_gosterici():
    print("Sonuç", sonuc)

def user_input():
    global sayi1_num
    global sayi2_num
  
    print("Sayı giriniz")
    try:
        sayi1_num = int(input())
    except ValueError:
        print("Sayı giriniz")

    print("Sayı giriniz")
    try:
        sayi2_num = int(input())
    except ValueError:
        print("Sayı giriniz")

user_input()
sonuc_hesaplayıcı()
sonuc_gosterici()

Pythonda global kullanımı değişikmiş. global ifadesi olmadan en tepede tanımladığınız değişkenleri fonksiyon içerisinde değiştirmek istiyorsanız global kullanmanız gerek. Değeri değiştirmeyip sadece okuyacaksanız buna gerek yok. Daha detaylı anlatım;

Bu arada yapmak istediğiniz çok daha basit yollu yapılabiliyor.
Python:
x = int(input("ilk sayi: "))
y = int(input("ikinci sayi: "))
print(f"iki sayi toplami: {x + y}")
Hocam sağolun :) Son kodu girdiğimde cidden çalışıyor baya bir güldüm ona o kadar uğraştığım şeye bakıp. Oradaki f harfi nerelerde ne için kullanılıyor?

https://chat.openai.com/chat

Buradan yapay zekaya hatanın nerede olduğunu sorabilirsiniz. Ne kadar yardımı olur bilmem ama denemeye değer :)

Yapay zekanın dediğine göre:

"Bu hata, sayı1_num ve sayı2_num değişkenlerinin tanımlanmadığını göstermektedir. Bu değişkenleri user_input fonksiyonunun içinde tanımladınız, ancak bu değişkenlerin global olduğunu belirtmediniz. Bu nedenle, bu değişkenler sonuc_hesaplayıcı fonksiyonu içinde tanımlanamamaktadır ve hata vermektedir.

Aşağıdaki kod parçacığında, global anahtar kelimesini kullanarak sayı1_num ve sayı2_num değişkenlerini global olarak tanımladım ve bu değişkenleri kullanarak bir sonuç hesapladım:


Python:
def sonuc_hesaplayıcı():
    global sonuc
    global sayı1_num
    global sayı2_num

    # Burada, sayı1_num ve sayı2_num değişkenlerini global olarak tanımladık
    # Bu sayede, user_input fonksiyonu içinde tanımlanan değişkenleri burada
    # kullanabileceğiz

    sonuc = sayı1_num + sayı2_num

def sonuc_gosterici():
    print("Sonuç:", sonuc)

def user_input():
    global sayı1_num
    global sayı2_num

    # Burada da aynı şekilde, sayı1_num ve sayı2_num değişkenlerini global
    # olarak tanımladık

    print("Sayı giriniz:")
    try:
        sayı1_num = int(input())
    except ValueError:
        print("Geçerli bir sayı giriniz!")

    print("Sayı giriniz:")
    try:
        sayı2_num = int(input())
    except ValueError:
        print("Geçerli bir sayı giriniz!")

user_input()
sonuc_hesaplayıcı()
sonuc_gosterici()

Bu kod parçacığını çalıştırdığınızda, kullanıcıdan iki sayı alıp, bu sayıların toplamını hesaplayarak ekrana yazdıracaktır."

Edit: Derleyicide test ettim verdiğim kod sorunsuz çalışıyor.
Hocam sağolun anladım.
 
Hocam sağolun :) Son kodu girdiğimde cidden çalışıyor baya bir güldüm ona o kadar uğraştığım şeye bakıp. Oradaki f harfi nerelerde ne için kullanılıyor?
String içerisine değişken vermemizi sağlıyor. String formatlama metodlarından biri.
Python:
age = 28
print(f"String icinde degisken {age}")
print("String icinde degisken {0}".format(age))
 

Yeni konular

Geri
Yukarı