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

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日

悬赏问题

  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作