You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中用f-string展示用户输入列表?解决语法报错及实现疑问

问题解决:f-string错误及购物列表展示修正

错误原因分析

  1. f-string语法错误:最后几行print语句的格式字符串里有多余的{符号。f-string仅需用{}包裹变量/表达式,固定文本直接书写即可,不需要额外加{。
  2. 变量使用错误:item是循环最后一次输入的内容(最终是空字符串),不是整个购物列表。要访问用户输入的列表项,得用grocery_list;同时item[0][0]逻辑错误,item是单个字符串,并非二维列表,正确的列表项访问方式是grocery_list[索引]。
  3. 其他逻辑问题:except块里的print()在break之后,永远不会执行;打印分隔线的循环逻辑错误,会导致每输出一个=就打印一次统计文本;没处理用户直接按回车的空列表情况。

修正后的代码

grocery_list = []

while True:
    try:
        item = input("Enter an item for your grocery list. Press <ENTER> when done: ")
        if len(item) == 0:
            break
        grocery_list.append(item)
    except EOFError:
        break

num_of_items = len(grocery_list)
print(num_of_items)

print('Welcome to the Grocery List Program.')
print()
# 打印分隔线
print('=' * 45)
print(f'You have {num_of_items} items on your grocery list.')
print('=' * 45)
print()

# 遍历购物列表并展示
if num_of_items > 0:
    for idx, item in enumerate(grocery_list, 1):
        print(f' ---- {item:>22}  [{idx}]')
else:
    print('Your grocery list is empty.')

关键修改说明

  • 调整输入逻辑:先判断输入是否为空,再添加到列表,避免空字符串混入,num_of_items直接等于列表长度即可。
  • 简化分隔线打印:用'=' * 45替代循环打印,简洁高效。
  • 正确遍历列表:用enumerate获取列表项的索引和内容,统一展示格式,同时处理空列表的情况。
  • 修复f-string语法:移除多余的{符号,确保格式字符串符合语法要求。

内容的提问来源于stack exchange,提问作者Natawee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 11:55:18