Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Greeting program [duplicate]

I have been learning how to program in Python using the book "Python the Absolute Beginners Guide." The problem I am having is that when using eclipse-pydev it won't allow me to use the if statement. Here is the code I have written...

name = input("What is your name? ")
print(name)
print("Hello" name )

The result was

What is your name? caleb
Traceback (most recent call last):
  File "/Users/calebmatthias/Document/workspace/de.vogella.python.first/simpprogram.py", line 6, in <module>
    name = input("What is your name? ")
  File "/Users/calebmatthias/Desktop/eclipse 2/plugins/org.python.pydev_2.2.3.2011100616/PySrc/pydev_sitecustomize/sitecustomize.py", line 210, in input
    return eval(raw_input(prompt))
  File "<string>", line 1, in <module>
NameError: name 'caleb' is not defined

When I do my if statement I put

name = input("What is your name? ")
if name == ("Caleb"):
    print(" Hello Bud!")

The result was

  What is your name? Caleb
Traceback (most recent call last):
  File "/Users/calebmatthias/Document/workspace/de.vogella.python.first/simpprogram.py", line 6, in <module>
    name = input("What is your name? ")
  File "/Users/calebmatthias/Desktop/eclipse 2/plugins/org.python.pydev_2.2.3.2011100616/PySrc/pydev_sitecustomize/sitecustomize.py", line 210, in input
    return eval(raw_input(prompt))
  File "<string>", line 1, in <module>
NameError: name 'Caleb' is not defined    
like image 687
Kbob1998 Avatar asked Oct 12 '11 23:10

Kbob1998


3 Answers

Use raw_input instead of input.

Python developers probably should have renamed those functions so it's more clear and beginners don't get confused so easily.

When you type caleb into the prompt with input it's trying to evaluate caleb which looks like a variable. The variable caleb hasn't been defined, so it's raising that exception.

like image 69
mpen Avatar answered Nov 06 '22 21:11

mpen


The reason is that you are using the input function which expects that the user will input a string that can evaluate to a python expression. Try changing it to raw_input which will not try to eval, but rather give you a raw string. Also, try just doing your print statement like: print "Hello", name You were missing a comma sep in that first example.

like image 4
jdi Avatar answered Nov 06 '22 23:11

jdi


>>> help(input)

input([prompt]) -> value

Equivalent to eval(raw_input(prompt)).

Use raw_input.

like image 3
Karoly Horvath Avatar answered Nov 06 '22 23:11

Karoly Horvath