我必须在python中回答这个问题,但我不确定我必须做什么,这就是问题:
您的程序应该从用户的多行输入中读取,在用户输入空行时停止。每一行都是从用户到手机的命令。每个命令都由一个以空格分隔的单词序列组成。
如果第一个单词是“添加”,则会有两个单词:人名和电话号码。如果遇到“添加”命令,则程序应将此名称存储到电话号码映射中。或者,如果第一个单词是Call,则后面会有一个单词:要呼叫的人的姓名。在这种情况下,如果手机知道此人的号码,您的程序应打印出正在呼叫该号码的号码,否则应打印出该号码没有该号码的号码。
我写的程序是:
contact = {}
**line = input('Command: ')
while line:
parts = line.split()
name = parts[0]
number = parts[1]
contact[name] = int(number)
line = input('Command: ')**
我还应该添加或做些什么来使这个程序有效?
答案 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"它仍然会找到匹配。