为了账号安全,请及时绑定邮箱和手机立即绑定

for循环中嵌套多个if语句的问题

老师,您好,我在编写某段程序时出现一些问题难以搞懂,忘能指点

#!usr/bin/python
# -*- coding: UTF-8 -*-
# lexicon.py
# 扫描器模块,用以判断用户输入的词汇类型
#用户输入
user_input = raw_input("input now!!\n>")
words = user_input.split() #分割字符串并以列表形式返回
def scan(words):
    #词汇表
    direction_list = ['north',  'south', 'east',
                    'west', 'down', 'up', 'left',
                        'right', 'back']
    verb_list = ['go', 'stop', 'kill', 'eat']
    stops_list = ['the', 'in', 'of', 'from',
                     'at', 'it']
    nouns_list = ['door', 'bear', 'princess',
                    'cabinet']
    #用于存储扫描处理结果
    results = []
    #遍历列表每个元素
    for word in words:
    #判断是否为方向
        if word in direcition_list:
            stuff = ('direction', word)
            return results.append(stuff)
    #判断是否为动词
    if word in verb_list:
            stuff = ('verb', word)
            return results.append(stuff)
    #判断是否为修饰词
        if word in stops_list:
            stuff = ('stops', word)
            return results.append(stuff)
    #判断是否为名词
        if word in nouns_list:
            stuff = ('nouns', word)
            return results.append(stuff)
    #判断是否为数字
        if convert_number(word):
            return results.append(convert_number(word))
            
def convert_number(s):
    try:
        return int(s)
    except ValueError:
        return None
File "lexicon.py", line 32
          if word in verb_list:
    ^
SyntaxError: invalid syntax
  1 #!/usr/bin/python                                                           
  2 # -*- coding: UTF-8 -*-
  3 # test.py
  4 lists = [1,2,3,4,5,6,7,8]
  5 list1 = [1,2]
  6 list2 = [3,4,5]
  7 list3 = [6,7,8]
  8 for i in lists:
  9     if i in list1:
 10         print "1"
 11     if i in list2:
 12         print "2"
 13     if i in list3:
 14         print "3"
 15  
# python test.py 
1
1
2
2
2
3
3
3

如上,因为第一段代码执行报错,所以我写了下面一段用来测试,发现for循环中嵌套使用多个if语句语法正确

我不知道是什么原因了


正在回答

1 回答

#!usr/bin/python
# -*- coding: UTF-8 -*-
# lexicon.py
# 扫描器模块,用以判断用户输入的词汇类型
#用户输入
user_input = raw_input("input now!!\n>")
words = user_input.split() #分割字符串并以列表形式返回
def scan(words):
    #词汇表
    direction_list = ['north',  'south', 'east',
                    'west', 'down', 'up', 'left',
                        'right', 'back']
    verb_list = ['go', 'stop', 'kill', 'eat']
    stops_list = ['the', 'in', 'of', 'from',
                     'at', 'it']
    nouns_list = ['door', 'bear', 'princess',
                    'cabinet']
    #用于存储扫描处理结果
    results = []
    #遍历列表每个元素
    for word in words:
    #判断是否为方向
        if word in direcition_list:
            stuff = ('direction', word)
            return results.append(stuff)
    #判断是否为动词
     if word in verb_list:
            stuff = ('verb', word)
            return results.append(stuff)
    #判断是否为修饰词
        if word in stops_list:
            stuff = ('stops', word)
            return results.append(stuff)
    #判断是否为名词
        if word in nouns_list:
            stuff = ('nouns', word)
            return results.append(stuff)
    #判断是否为数字
        if convert_number(word):
            return results.append(convert_number(word))

def convert_number(s):
    try:
        return int(s)
    except ValueError:
        return None

代码和你的是一样的,你那一行if前面使用了一个全角空格.

0 回复 有任何疑惑可以回复我~
#1

叫我树莓派_ 提问者

问题解决了,万分感谢,vim下练习时常会出现一些这样的问题,有时候还很难发现 另外,不知道你对python中文字符输出到utf8编码下的linux终端出现乱码问题知道问题不,linux终端编码设置为gbk*格式显示正常,然而这样做其他文件就显示乱码了
2016-04-28 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识Python
  • 参与学习       758625    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

for循环中嵌套多个if语句的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信