Çözüldü Python AttributeError

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

deezwend

Hectopat
Katılım
28 Haziran 2021
Mesajlar
294
Çözümler
4
Daha fazla  
Cinsiyet
Erkek
Python:
import pyautogui as py
import time
liste = []

def bas(v,x,y,z,a,b):
    py.click(v,x,y,z,a,b)

def tanimla():
    kox = "x"
    for i in range(2):
        sor = int(input(f"{kox} koordinatını girin:\n"))
        liste.append(sor)
        kox = "y"
        if len(str(sor)) > 4:
            print("4 veya 4'ten küçük haneli sayılar girin.")
            return tanimla()
    sor2 = int(input("Kaç kere tıklayacak:\n"))
    liste.append(sor2)
    sor3 = float(input("Ne kadar arayla tıklayacak:\n"))
    liste.append(sor3)
    dongu = True
    while dongu:
        sor4 = int(input("Hangi düğmeye basacak?\n1:Sol\n2:Sağ\n"))
        if sor4 == 1:
            liste.append("left")
            dongu = False
        elif sor4 == 2:
            liste.append("right")
            dongu = False
        else:
            print("Sadece 1 veya 2 rakamlarını girin.")
    sor5 = float(input("İmleç kaç saniye sonra gitsin?\n"))
    liste.append(sor5)
    bas(v=liste[0],x=liste[1],y=liste[2],z=liste[3],a=liste[4],b=liste[5])


tanimla()


Merhabalar, yukarıda görmüş olduğunuz kodlarda bir sıkıntı yaşıyorum.
Python:
        if len(str(sor)) > 4:
            print("4 veya 4'ten küçük haneli sayılar girin.")
            return tanimla()

Buradaki gördüğünüz kodlarda, eğer 4 haneden daha büyük haneli bir sayı verilir ise daha küçük haneli sayı girmesini istemesini söyleyip fonksiyona return attırdım. Fakat bu return'dan sonraki gelen bütün inputları doldurduktan sonra aşağıda gördüğünüz tarzda değişik bir hata yaşıyorum:

Kod:
Traceback (most recent call last):
  File "c:\VSCode\Python\main.py", line 37, in <module>
    tanimla()
  File "c:\VSCode\Python\main.py", line 16, in tanimla
    return tanimla()
  File "c:\VSCode\Python\main.py", line 34, in tanimla
    bas(v=liste[0],x=liste[1],y=liste[2],z=liste[3],a=liste[4],b=liste[5])
  File "c:\VSCode\Python\main.py", line 6, in bas
    py.click(v,x,y,z,a,b)
  File "C:\Python\lib\site-packages\pyautogui\__init__.py", line 598, in wrapper
    returnVal = wrappedFunction(*args, **kwargs)
  File "C:\Python\lib\site-packages\pyautogui\__init__.py", line 979, in click
    button = _normalizeButton(button)
  File "C:\Python\lib\site-packages\pyautogui\__init__.py", line 845, in _normalizeButton
    button = button.lower()
AttributeError: 'float' object has no attribute 'lower'


Eğer bu konuda yardımcı olabilirseniz gerçekten çok mutlu olurum. Belki aldığım hatayı tam anlatamamış olabilirim. O yüzden bir video çekeceğim şimdi.

Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.


Bu videoda yaptığım gibi 4 haneliden büyük bir sayı yazmazsam bu hatayı almıyorum. Gerçekten kafayı yedim 2 saattir. Umarım yardımcı olabilirsiniz bana.
 
Çözüm
Sayının önce 4 basamaktan büyük olup olmadığını sorması, sonrasında listeye eklemesi gerekiyor.
Ayrıca fonksiyonu return etmeden önce de liste sıfırlanmalı.

Python:
def tanimla():
    kox = "x"
    for i in range(2):
        sor = int(input(f"{kox} koordinatını girin:\n"))
        if len(str(sor)) > 4:
            print("4 veya 4'ten küçük haneli sayılar girin.")
            liste.clear()
            return tanimla()
        else:
            liste.append(sor)
            kox = "y"
Sayının önce 4 basamaktan büyük olup olmadığını sorması, sonrasında listeye eklemesi gerekiyor.
Ayrıca fonksiyonu return etmeden önce de liste sıfırlanmalı.

Python:
def tanimla():
    kox = "x"
    for i in range(2):
        sor = int(input(f"{kox} koordinatını girin:\n"))
        if len(str(sor)) > 4:
            print("4 veya 4'ten küçük haneli sayılar girin.")
            liste.clear()
            return tanimla()
        else:
            liste.append(sor)
            kox = "y"
 
Çözüm
Python:
import pyautogui as py
import time
liste = []

def bas(v,x,y,z,a,b):
    py.click(v,x,y,z,a,b)

def tanimla():
    kox = "x"
    for i in range(2):
        sor = int(input(f"{kox} koordinatını girin:\n"))
        liste.append(sor)
        kox = "y"
        if len(str(sor)) > 4:
            print("4 veya 4'ten küçük haneli sayılar girin.")
            return tanimla()
    sor2 = int(input("Kaç kere tıklayacak:\n"))
    liste.append(sor2)
    sor3 = float(input("Ne kadar arayla tıklayacak:\n"))
    liste.append(sor3)
    dongu = True
    while dongu:
        sor4 = int(input("Hangi düğmeye basacak?\n1:Sol\n2:Sağ\n"))
        if sor4 == 1:
            liste.append("left")
            dongu = False
        elif sor4 == 2:
            liste.append("right")
            dongu = False
        else:
            print("Sadece 1 veya 2 rakamlarını girin.")
    sor5 = float(input("İmleç kaç saniye sonra gitsin?\n"))
    liste.append(sor5)
    bas(v=liste[0],x=liste[1],y=liste[2],z=liste[3],a=liste[4],b=liste[5])


tanimla()


Merhabalar, yukarıda görmüş olduğunuz kodlarda bir sıkıntı yaşıyorum.
Python:
        if len(str(sor)) > 4:
            print("4 veya 4'ten küçük haneli sayılar girin.")
            return tanimla()

Buradaki gördüğünüz kodlarda, eğer 4 haneden daha büyük haneli bir sayı verilir ise daha küçük haneli sayı girmesini istemesini söyleyip fonksiyona return attırdım. Fakat bu return'dan sonraki gelen bütün inputları doldurduktan sonra aşağıda gördüğünüz tarzda değişik bir hata yaşıyorum:

Kod:
Traceback (most recent call last):
  File "c:\VSCode\Python\main.py", line 37, in <module>
    tanimla()
  File "c:\VSCode\Python\main.py", line 16, in tanimla
    return tanimla()
  File "c:\VSCode\Python\main.py", line 34, in tanimla
    bas(v=liste[0],x=liste[1],y=liste[2],z=liste[3],a=liste[4],b=liste[5])
  File "c:\VSCode\Python\main.py", line 6, in bas
    py.click(v,x,y,z,a,b)
  File "C:\Python\lib\site-packages\pyautogui\__init__.py", line 598, in wrapper
    returnVal = wrappedFunction(*args, **kwargs)
  File "C:\Python\lib\site-packages\pyautogui\__init__.py", line 979, in click
    button = _normalizeButton(button)
  File "C:\Python\lib\site-packages\pyautogui\__init__.py", line 845, in _normalizeButton
    button = button.lower()
AttributeError: 'float' object has no attribute 'lower'


Eğer bu konuda yardımcı olabilirseniz gerçekten çok mutlu olurum. Belki aldığım hatayı tam anlatamamış olabilirim. O yüzden bir video çekeceğim şimdi.

Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.


Bu videoda yaptığım gibi 4 haneliden büyük bir sayı yazmazsam bu hatayı almıyorum. Gerçekten kafayı yedim 2 saattir. Umarım yardımcı olabilirsiniz bana.

Bütün işlemi Sonsuz döngü içerisinde yapın ?
 
Sayının önce 4 basamaktan büyük olup olmadığını sorması, sonrasında listeye eklemesi gerekiyor.
Ayrıca fonksiyonu return etmeden önce de liste sıfırlanmalı.

Python:
def tanimla():
    kox = "x"
    for i in range(2):
        sor = int(input(f"{kox} koordinatını girin:\n"))
        if len(str(sor)) > 4:
            print("4 veya 4'ten küçük haneli sayılar girin.")
            liste.clear()
            return tanimla()
        else:
            liste.append(sor)
            kox = "y"
Deneyeceğim şimdi.
Sayının önce 4 basamaktan büyük olup olmadığını sorması, sonrasında listeye eklemesi gerekiyor.
Ayrıca fonksiyonu return etmeden önce de liste sıfırlanmalı.

Python:
def tanimla():
    kox = "x"
    for i in range(2):
        sor = int(input(f"{kox} koordinatını girin:\n"))
        if len(str(sor)) > 4:
            print("4 veya 4'ten küçük haneli sayılar girin.")
            liste.clear()
            return tanimla()
        else:
            liste.append(sor)
            kox = "y"
Hocam çok teşekkürler gerçekten çok mahvetmişti kafamı.
 

Technopat Haberler

Yeni konular

Geri
Yukarı