0

我正在尝试用 Python 找出一个“简单”的字典/数据库,它将从十个列表中检索一个名称,以及所请求的信息。即输入是“约翰电话”;输出是“约翰的电话号码是 0401”。

除了完全停留在特定信息的检索上之外,python 突然在 name = raw_input 行上给我一个语法错误。

以下是我保存为“朋友”的文件:

#!/usr/bin/python

friends = {'John' : {'phone' : '0401',
        'birthday' : '31 July',
        'address' : 'UK',
        'interests' : ['a', 'b', 'c']},
    'Harry' : {'phone' : '0402',
        'birthday' : '2 August',
        'address' : 'Hungary',
        'interests' : ['d', 'e', 'f']}}
name = raw_input ('Who are you looking for? ')
if name in friends: 
print friends[name]"'s phone number is: "['phone']
    # this line is something I haven't tested
    # and so I have a big hunch it's not going to work
else: 
    print 'no data'

这是它给我的错误:

$ ./friends
File "./friends", line 11
name = raw_input ('Who are you looking for? ')
     ^
SyntaxError: invalid syntax

请注意,几个小时前,当我使用 imac 上的终端处理同一个文件时,这并没有发生。我没有改变那条线,我完全不知道它为什么会播放!

  • 也不能在我的电脑的 cygwin 或另一台借来的 mac 上工作。
  • 是的,我已经在终端中输入了 chmod +x 朋友。

这可能是最简单、最愚蠢的事情,而且我可能完全忽略了某些事情或不小心撞到了钥匙(现在是凌晨 1 点......这是周一到期......),但任何帮助都将不胜感激!

4

2 回答 2

2

raw_input()条线在这里工作得很好。

您在“不确定”行有语法错误。它可以这样读:

print name + "'s phone number is: " + friends[name]['phone']

您还可以使用格式字符串:

print "%s's phone number is: %s" % (name, friends[name]['phone'])

if块:

if name in friends: 
    print "%s's phone number is: %s" % (name, friends[name]['phone'])
else: 
    print 'no data'

否则,您的代码在直接从您的帖子中复制/粘贴后对我有用。

于 2012-05-04T15:31:13.507 回答
1

您在打印消息的行中有语法错误并忘记缩进它(这在 python 中不是可选的!)。

以下是一些固定版本:

print name + "'s phone number is: " + friends[name]['phone']
print "%s's phone number is: %s" % (name, friends[name]['phone'])

其他行都很好,所以你得到的错误很奇怪。

于 2012-05-04T15:29:14.803 回答