0

HELP PLEASE! Why am I receiving NameError 'c' is not defined? I've tried using c as a global variable but then it says NameErro

print ('What do you want to do?') a = input ('1. Take notes 2. Summarize notes: ') if a == ('1'): b = input ('Paste article or reading: ') c = b.split('.') def notes(): if c.len == 2 or 1: d = ''.join(c[1])

5th Oct 2018, 3:59 AM
NicoChis
NicoChis - avatar
23 Respuestas
+ 3
I'm in a hurry and I don't know if Kishalaya Saha already explained this, but you can't use "if len(c) == 2 or 1". 1 is true. Any expression "or true" is always true. You have to use if len(c) == 2 or len(c) == 1 instead
5th Oct 2018, 6:55 AM
Anna
Anna - avatar
+ 3
Anna I usually do this: ''' if len(c) in [1,2]: #codes ''' shorter, clearer, and easy to modify😀
5th Oct 2018, 9:32 AM
Flandre Scarlet
Flandre Scarlet - avatar
+ 1
Hi NicoChis! 1. Looks like your code is incomplete. You are never calling the function notes(). It should be called somewhere after the function is defined. 2. I think c.len is not a valid syntax; it should be len(c). 3. I do believe writing global c after "def notes():" should fix the NameError. You may also pass c as an argument of the function notes, thus avoid using globals. It may be better if you save the code in the Code Playground, and paste a link here.
5th Oct 2018, 4:32 AM
Kishalaya Saha
Kishalaya Saha - avatar
+ 1
Kishalaya Saha thank you and also this isnf my full code or function i do end up calling the function after. but to clarify you are saying thati should use def notes(c)?
5th Oct 2018, 4:36 AM
NicoChis
NicoChis - avatar
+ 1
Yes, that's one way of passing the list by reference to the function. We won't need globals then. #define function def notes(c): #do stuff with c here #call function notes(c)
5th Oct 2018, 4:44 AM
Kishalaya Saha
Kishalaya Saha - avatar
+ 1
Could you please paste a link to your full code?
5th Oct 2018, 4:49 AM
Kishalaya Saha
Kishalaya Saha - avatar
5th Oct 2018, 4:54 AM
NicoChis
NicoChis - avatar
+ 1
ok i just posted the link
5th Oct 2018, 4:54 AM
NicoChis
NicoChis - avatar
+ 1
Kishalaya Saha OK I THINK I FIXED IT GIVE ME A SECOND
5th Oct 2018, 4:59 AM
NicoChis
NicoChis - avatar
+ 1
Thanks! So, if I try to run it with 1 as the first input, it works fine. But if I try 2, it doesn't work. Is that what's happening with you too? Then the reason is simple: You have defined c only inside the block if a == ('1'): When a is not "1", c is not defined, and we get a NameError. To fix this I would call notes() inside the if block. That'd also require us to put the whole if block below the function definition. Does that make sense? By the way, just if a == '1': suffices, you don't need the parentheses.
5th Oct 2018, 5:01 AM
Kishalaya Saha
Kishalaya Saha - avatar
+ 1
Kishalaya Saha i changed input to raw_input and fixed the name error problem... and im glad it worked but can yoy explain why???
5th Oct 2018, 5:06 AM
NicoChis
NicoChis - avatar
+ 1
Are you running the code here, or somewhere else with Python 2.x? raw_input() is for Python 2.x what input is for Python 3.x The following is for Python 2.x: raw_input() takes the argument as a string. So even if you enter 1, it would be treated as the string "1". input() tries to evaluate what you enter. That is, when you enter 1, it would be interpreted as a number. Then to make it work, you'd have to do if a==1:, without the quotes around 1. Does that make sense?
5th Oct 2018, 5:12 AM
Kishalaya Saha
Kishalaya Saha - avatar
+ 1
Kishalaya Saha just reaized why ive been making some mistakes ive ran my code on seperate things and assumed i was running python 3 on all of them. when i run the on my mac terminal i have been say python Notes.py instead of python3 Notes.py😭
5th Oct 2018, 5:14 AM
NicoChis
NicoChis - avatar
+ 1
Kishalaya Saha i will thanks
5th Oct 2018, 5:16 AM
NicoChis
NicoChis - avatar
+ 1
NicoChis the error with "c is not defined" happens when a!="1", because c is only defined when a=="1" you should put notes(a) in the "if" block and also, the whole "if" block should be at the end, because the definition of "notes(c)" should be in front of where it's used😀
5th Oct 2018, 9:36 AM
Flandre Scarlet
Flandre Scarlet - avatar
0
Kishalaya Saha i was just trying that and it returned name error c is not defined again
5th Oct 2018, 4:48 AM
NicoChis
NicoChis - avatar
0
Kishalaya Saha right now the code is only for taking notes so entering 2 does not have any purpose right now. i am gojng ot do that later
5th Oct 2018, 5:03 AM
NicoChis
NicoChis - avatar
0
Great! Do you have any other question at the moment?
5th Oct 2018, 5:04 AM
Kishalaya Saha
Kishalaya Saha - avatar
0
Ah yes, that's the problem! So everything is good now? :) Let us know if you run into any more issues.
5th Oct 2018, 5:16 AM
Kishalaya Saha
Kishalaya Saha - avatar
0
No, I didn't. Thanks Anna!
5th Oct 2018, 7:06 AM
Kishalaya Saha
Kishalaya Saha - avatar