苦苦挣扎着Python

时间:2015-08-26 08:43:08

标签: python

我必须在python中回答这个问题,但我不确定我必须做什么,这就是问题:

  

您的程序应该从用户的多行输入中读取,在用户输入空行时停止。每一行都是从用户到手机的命令。每个命令都由一个以空格分隔的单词序列组成。

     

如果第一个单词是“添加”,则会有两个单词:人名和电话号码。如果遇到“添加”命令,则程序应将此名称存储到电话号码映射中。或者,如果第一个单词是Call,则后面会有一个单词:要呼叫的人的姓名。在这种情况下,如果手机知道此人的号码,您的程序应打印出正在呼叫该号码的号码,否则应打印出该号码没有该号码的号码。

我写的程序是:

contact = {}

**line = input('Command: ')
while line:
parts = line.split()
name = parts[0]
number = parts[1]
contact[name] = int(number)
line = input('Command: ')**

我还应该添加或做些什么来使这个程序有效?

1 个答案:

答案 0 :(得分:0)

首先,您需要添加一个循环,以便在用户输入空白行之前不断询问用户。

在编写与用户交互的脚本时,考虑用户可能做错的事情也是明智的。该问题表明了许多要求,例如,如果输入Add,则应该有两个单词。如果用户只输入了一个,你应该怎么做?

如果用户输入尚未输入的名称,会发生什么? Python词典提供了一个get()方法来处理这个问题。它允许您指定在请求的密钥不存在时需要返回的内容。在这种情况下,您可以返回"未知名称"。

以下显示了我的意思:

line = ' '
contacts = {}

while line:
    line = input('Command: ')

    if line:
        words = line.split()

        if words[0] == 'Add':
            if len(words) == 3:
                contacts[words[1].lower()] = words[2]
            else:
                print("Badly formatted Add")

        if words[0] == 'Call':
            if len(words) == 2:
                print(contacts.get(words[1].lower(), "Unknown name"))
            else:
                print("Badly formatted Call")

通过在输入的名称上使用.lower()命令,这意味着用户可以执行"添加Fred 1234 / Call fred"它仍然会找到匹配。