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

Python控制台动词加ing游戏报'str'对象不支持项赋值错误求助

报错根因

Python中的字符串属于不可变类型,不支持通过索引下标直接修改、删除单个字符。你代码中写的command[-1] = ""本质是尝试直接修改字符串最后一位的内容,因此会抛出'str' object does not support item assignment错误。
额外提一句:直接通过command[-1]取最后一位做判断的写法存在隐患,若用户输入空内容,会直接触发索引越界错误。

修复方案

不要尝试原地修改字符串的单个字符,Python中字符串修改的通用逻辑是基于原字符串切片、拼接生成新字符串。把原代码中判断词尾为e的逻辑块替换为如下写法即可:

# 用字符串内置endswith方法判断后缀,天然兼容空输入场景,不会报索引错
if command.endswith("e"):
    command = command[:-1]
修复后完整可运行代码

顺便修正了原代码的一个逻辑漏洞:原逻辑会把help/clear/rest这类控制指令存入动词历史列表,干扰后续“连续输入相同动词”的判断,调整后指令不会进入动词列表,逻辑更通顺:

import os

print("---What to do?---\n")

command = ""
# 初始化动词历史列表,用空字符串占位避免初始索引判断报错
verbs = ["", ""]

while True:
    command = input("What should I do now? ").lower().strip()
    # 优先处理控制指令,不进入动词变形、存储逻辑
    if command == "help":
        print("\nJust give me verb!\n")
        continue
    elif command == "rest":
        print("\nFine, bye!")
        break
    elif command == "clear":
        os.system('cls')
        print("---What to do?---\n")
        continue
    
    # 处理动词去e加ing的变形规则
    if command.endswith("e"):
        command = command[:-1]
    verbs.append(command)

    if verbs[-1] != verbs[-2]:
        print(f"\nOk I'm {command}ing\n")
    else:
        print(f"\nI'm tired of {command}ing\n")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 00:15:44