tisuki_t 2022-06-04 11:50 采纳率: 87.5%
浏览 252
已结题

python列表生成器与推导器语法错误问题

python列表生成器与推导器问题

img


输入代码后显示语法错误expected else after if expression

img

ls = ['the lord of the rings','anaconda','legally blonde','gone with the wind']
s = input()        # 输入一个字符
if s == '1':       # 当输入为"1"时,输出元素为0-93次方的列表 [0, 1, 8, 27, 64, 125, 216, 343, 512, 729]
    print([i**3 for i in range(10)])

elif s == '2':     # 当输入为"2"时,输出元素为0-9中偶数的3次方的列表 [0, 8, 64, 216, 512]
    print([i**3 for i in range(10)]if i%2==0)

elif s == '3':     # 当输入为"3"时,输出元素为元组的列表,元组中元素依次是0-9中的奇数和该数的3次方[(1, 1), (3, 27), (5, 125), (7, 343), (9, 729)]
    print([(i, i**3) for i in range(10)] if i %2 !=0)

elif s == '4':     # 当输入为"4"时,将ls中每个元素单词首字母大写输出['The lord of the rings', 'Anaconda', 'Legally blonde', 'Gone with the wind']
    print([i.capitalize() for i in ls])

else:              # 当输入为其他字符时,执行以下语句
    print('结束程序')


  • 写回答

1条回答 默认 最新

  • 请叫我问哥 新星创作者: python技术领域 2022-06-04 12:17
    关注

    s等于2或3的列表推导式,if应该放在方括号内:

    elif s == '2':     # 当输入为"2"时,输出元素为0-9中偶数的3次方的列表 [0, 8, 64, 216, 512]
        print([i**3 for i in range(10)if i%2==0])
     
    elif s == '3':     # 当输入为"3"时,输出元素为元组的列表,元组中元素依次是0-9中的奇数和该数的3次方[(1, 1), (3, 27), (5, 125), (7, 343), (9, 729)]
        print([(i, i**3) for i in range(10) if i %2 !=0])
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月12日
  • 已采纳回答 6月4日
  • 创建了问题 6月4日