Python Forum
Error in code NameError: name ' ' is not defined
Thread Rating:
  • 1 Vote(s) - 1 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Error in code NameError: name ' ' is not defined
#1
Hi. I have a problem with code(self studying-just started).
I have a problem "NameError: name 'numb' is not defined".
It should be easy solution for that and im sitting with it about 2 hours.

my code:

from typing import List, Any, TextIO

 
lista: List[int] = []

file = str(input("file name: ")+'.txt')

n = int(input("give how many digits u want to input, modulo 4 must be 0: \n", ))

while n % 4 != 0:
    n = int(input("wrong", ))
print("give " + str(n) + " digit")

while len(lista) < n:

    digit= int(input("give digit: "))

    if not 0 <= digit <= 9:
        print('wrong')
    else:
        lista.append(digit)

print(lista)

m = int(len(lista)/4)

#print(m)

for i in range(0, m):

    x = i
    y = i + 1

    numb.x=int(str(lista[0 + i*4]) + str(lista[2 + i*4]))
    numb.y=int(str(lista[1 + i * 4]) + str(lista[3 + i * 4]))

    numb.i= (numb.x) + (numb.y)

    chr(a.i)
    print(chr(a.i), end=" ")

file: TextIO = open((file), 'w')
file.write(chr(a.i))
file.close()
Reply
#2
Try declaring the variable numb.. that should fix it. I tried the code and here's where I put it.

#print(m)
numb = 0
for i in range(0, m):

    x = i
    y = i + 1

    numb.x=int(str(lista[0 + i*4]) + str(lista[2 + i*4]))
    numb.y=int(str(lista[1 + i * 4]) + str(lista[3 + i * 4]))

    numb.i= (numb.x) + (numb.y)

    chr(a.i)
    print(chr(a.i), end=" ")
Reply
#3
I've already tried that. After running the program it work till that line.

Error:
numbb.x=int(str(lista[0 + i*4]) + str(lista[2 + i*4])) AttributeError: 'int' object has no attribute 'x'
Reply
#4
I just found the way to solve the problem. On the begining i've addes

import numb
Not sure if it is the rigt way to do it. Do you have other solutions?
Reply
#5
Did you try it out? I tried out the fix I suggested and I didn't get an error message.
Reply
#6
(Sep-16-2020, 09:06 PM)Jeff_F Wrote: Did you try it out? I tried out the fix I suggested and I didn't get an error message.
What was the exact code you tried?
Reply
#7
I used this code below. It program works till the line with numb.x.
In 1st stage program asking for file name. (it will save the result there)
In the next stage program asks how many digits your going to input, and that and modulo 4 from that number must be equal 0.
Third stage is input digits. Till that moment it works.
After that i receive error

from typing import List, Any, TextIO
 
  
lista: List[int] = []
 
file = str(input("file name: ")+'.txt')
 
n = int(input("give how many digits u want to input, modulo 4 must be 0: \n", ))
 
while n % 4 != 0:
    n = int(input("wrong", ))
print("give " + str(n) + " digit")
 
while len(lista) < n:
 
    digit= int(input("give digit: "))
 
    if not 0 <= digit <= 9:
        print('wrong')
    else:
        lista.append(digit)
 
print(lista)
 
m = int(len(lista)/4)
 
#print(m)
numb = 0
for i in range(0, m):
 
    x = i
    y = i + 1
 
    numb.x=int(str(lista[0 + i*4]) + str(lista[2 + i*4]))
    numb.y=int(str(lista[1 + i * 4]) + str(lista[3 + i * 4]))
 
    numb.i= (numb.x) + (numb.y)
 
    chr(numb.i)
    print(chr(numb.i), end=" ")
 
file: TextIO = open((file), 'w')
file.write(chr(numb.i))
file.close()
Reply
#8
What do you intend for that line to do?

numb is an int. ints don't have an x attribute (or y, or i). You can't just add that field to a random int. I would tell you what to do instead, but again, I'm not sure.
Reply
#9
As others have said, you created numb as an int and are then trying to define variables inside of it.
There are at least two simple solutions:
1) Define a variable for each case.
#Instead of 
numb.x = 0
#use 
numb_x = 0
2) Use a dictionary
numb = {}
numb['x'] = 0
numb['y'] = 0
Reply
#10
(Sep-16-2020, 09:11 PM)micseydel Wrote:
(Sep-16-2020, 09:06 PM)Jeff_F Wrote: Did you try it out? I tried out the fix I suggested and I didn't get an error message.
What was the exact code you tried?

I simply added a line of code to initialize numb to zero. It got past the error and it seems to work fine.,

#print(m)
numb = 0
for i in range(0, m):
 
    x = i
    y = i + 1
 
    numb.x=int(str(lista[0 + i*4]) + str(lista[2 + i*4]))
    numb.y=int(str(lista[1 + i * 4]) + str(lista[3 + i * 4]))
 
    numb.i= (numb.x) + (numb.y)
 
    chr(a.i)
    print(chr(a.i), end=" ")

Here's the results after I initialize numb to zero. I have no idea what the code is supposed to do but it works up to the this point. Some comments would be nice to let us know what you're trying to accomplish.,

Quote:Traceback (most recent call last):
File "<module1>", line 54, in <module>
NameError: name 'a' is not defined
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
Exclamation NameError: name 'score' is not defined - Help? MrKnd94 13 4,363 Mar-06-2023, 10:54 PM
Last Post: deanhystad
  How to correct the NameError: name 'xx' is not defined? vokoyo 5 11,205 Feb-17-2021, 05:55 AM
Last Post: delonbest
  NameError: name 'os' is not defined, & load_files(sys.argv[1]) AryaIC 3 4,621 Nov-07-2020, 07:45 PM
Last Post: jefsummers
  NameError: name 'print_string' is not defined jamie_01 2 1,998 Jun-11-2020, 05:27 AM
Last Post: buran
  "NameError: name 'catName1' is not defined tofif 3 5,585 Jun-24-2019, 06:05 AM
Last Post: perfringo
  NameError x not defined Bruizeh 5 5,200 Feb-27-2019, 10:59 AM
Last Post: Larz60+
  NameError: name 'mailbox_list' is not defined pythonnewb 2 4,709 Aug-06-2017, 09:31 PM
Last Post: pythonnewb

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020