使用if比较答案和通话功能

时间:2017-10-04 00:12:26

标签: python function input

我正在尝试比较两个答案,如果问题的答案是“e”,我需要它来调用函数CheckID,这个函数连接到某个服务器中的数据库并提取一些信息。我可以连接到数据库,但问题是它在回答问题后没有调用函数,它告诉我'e'没有定义!!我尝试通过添加e = CheckID()来定义它,但它仍然没有调用该函数。请帮助我实现这一目标或让我知道我做错了什么

这是我的代码:

import psycopg2
import psycopg2.extras

question = input("Type 'e' to Check Existing Id, or 'a' to add Account Id ?   ")

if question == 'e':
    CheckID()

else:
    AddID()


def CheckID():

    acc = input("Type ID ")  

    conn = psycopg2.connect(database="", user = "", password = "", host = "", port = "")
    cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
    cur.execute('select "AccountID","Zip" from "Account" where "AccountID" =  %s', (acc,))

    ans =cur.fetchall()
    ans1 = {}

    for AccountID in ans:

        if len(Zip) != 3:       
            Zip = '111'
            print(AccountID, Zip)


        else:
            print(AccountID, Zip)

def AddID():
    print "Thank you for using our script"

ask()

这是我得到的错误

enter code here Type 'e' to Check Existing Id, or 'a' to add Account Id ?   e
Traceback (most recent call last):
  File "final7.py", line 4, in <module>
    question = input("Type 'e' to Check Existing Id, or 'a' to add Account Id ?   ")
  File "<string>", line 1, in <module>
NameError: name 'e' is not defined

2 个答案:

答案 0 :(得分:0)

如评论中所述,您在python 2中运行脚本而不是python 3.在Python 2中,input()eval(raw_input(...))相同。

运行您的程序:python3 final7.py

答案 1 :(得分:0)

您的问题在于您正在使用的Python版本。我在Python 3.6中运行,代码运行正常。在Python 2.x中,

input 

定义为

raw_input 

所以只需在3.6中运行您的代码或更新您的&#34;输入&#34; to&#34; raw_input&#34;。