【问题标题】:List Address Book列出通讯簿
【发布时间】:2015-12-20 23:20:36
【问题描述】:

当我在 shell 上要求 python 第二次打印它时,为什么我的列表是空的?

def name():
    name = str(input("Name:"))
    return name

def phone():
    phone = str(input("Phone Number: "))
    return phone

def email():
    email = str(input("Email: "))
    return email

然后我创建了一个join 函数,以便将所有数据添加到列表中:

def join(lst, name, phone, email): 
    name = name()

if name in lst:
    print("Name already in")
    phone = phone()

if phone in lst:
    print("Phone already exists")
    email = email()

if email in lst:
    print("Email already exists!")
    lst += [name]
    lst += [phone]
    lst += [email]
    print("Added!")
return lst

列出地址簿上每个条目的功能:

def print_list(lst):
    print(lst)

菜单如下所示:

def menu():
    print("1-New Contact")
    print("2-Print list")
    option = int(input("Option:"))
return option

def repeat(lst):
    option = menu()
    while option < 2 and option >= 1:
        if option == 1:
            lst = join(lst, name, phone, email)
        elif opcao == 2:
            lst = print_list(lst)
        else:
            print("Invalid option")
        opcao = menu()

lst = []
call = repeat(lst)
print(call)

【问题讨论】:

  • 能否请您提供一个完整的MCVE,而不是几个代码sn-ps?如果您的代码很长,请将其缩小到您真正需要的部分,以使您的问题可重现。此外,请修复您的语法错误(缩进和字符串)。
  • 您的缩进已关闭,您缺少引号,并且您屏蔽了一个函数。
  • 原始文件的识别没有问题,程序运行良好,唯一的问题是当我第二次运行菜单并要求它再次打印列表时。 @TigerhawkT3

标签: python python-3.x


【解决方案1】:

我假设您打印的意思是这部分代码:lst=print_list(lst),而您的列表位于 lst 变量中。

您在这里所做的是在第一次调用后将print_list 函数的返回值分配给您的lst 变量。这会将其设置为 None 因为 print_list 不会显式返回任何值。当您尝试第二次打印时,lst 为 None 并且不打印任何内容。

您不应分配给lst,而只需调用print_list(lst)而不分配返回值:

elif opcao==2: print_list(lst)

【讨论】:

  • 非常感谢您的回答@Szymon,它现在可以正常工作了。
  • 你知道我怎样才能让它打印出 A-Z 的输入名称列表吗?
  • 这是一个单独的问题 - 请提出一个新问题。
  • 不幸的是 Stackoverflow 直到 4 天才允许我这样做@Szymon
猜你喜欢
  • 1970-01-01
  • 2011-06-10
  • 1970-01-01
  • 1970-01-01
  • 2017-04-20
  • 2010-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多