鱼C论坛

 找回密码
 立即注册
查看: 1669|回复: 2

[已解决]求助,27讲课后作业按照课程答案敲的代码,运行结果却不符合题目要求

[复制链接]
发表于 2023-7-29 11:15:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 xy-xuan 于 2023-7-29 11:15 编辑

代码如下:
s = input('请输入字符串:')
s = str(s)
res = []
for each in s:
    if res and res[-1].lower() == each.lower and res[-1] != each:
        res.pop()

    else:
        res.append(each)
        
for each in res:
    print(each,end='')

题目要求:输入的字符串中如果有连续两个字母(s[j],s[j-1])为同一个字母的大小写,则这两个字母一并删除
举例:FishCcCode→FishCode
最佳答案
2023-7-29 11:15:37
根据你提供的代码,我发现一个问题。在条件语句中,判断是否相等的部分应该调用 lower() 方法来比较字母的大小写。请将 each.lower 改为 each.lower()。修改后的代码如下所示:
s = input('请输入字符串:')
s = str(s)
res = []
for each in s:
    if res and res[-1].lower() == each.lower() and res[-1] != each:
        res.pop()
    else:
        res.append(each)
for each in res:
    print(each, end='')

运行修改后的代码,应该能够得到符合题目要求的结果。如果还有其他问题,请随时提问。
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-29 11:15:37 | 显示全部楼层    本楼为最佳答案   
根据你提供的代码,我发现一个问题。在条件语句中,判断是否相等的部分应该调用 lower() 方法来比较字母的大小写。请将 each.lower 改为 each.lower()。修改后的代码如下所示:
s = input('请输入字符串:')
s = str(s)
res = []
for each in s:
    if res and res[-1].lower() == each.lower() and res[-1] != each:
        res.pop()
    else:
        res.append(each)
for each in res:
    print(each, end='')

运行修改后的代码,应该能够得到符合题目要求的结果。如果还有其他问题,请随时提问。
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-29 11:15:38 | 显示全部楼层
问题分析:
根据提供的代码和问题要求,这段代码的目标是在输入的字符串中删除连续两个字母(大小写不敏感)相同的部分,并输出删除后的结果。但是,这段代码在实际运行时似乎不能正确地达到题目要求,导致输出结果不符合预期。

问题可能出现的地方:
1. 输入的字符串格式不符合预期,导致代码运行错误。
2. 循环遍历的逻辑问题,导致连续相同的字母未被正确删除。
3. 输出逻辑问题,导致结果输出错误。

解决方案:
1. 首先,我们需要检查输入的字符串是否符合预期。在代码中,通过  input  函数获取输入,我们应该确认用户是否按照题目要求输入了字符串。

2. 其次,检查循环遍历和删除连续相同字母的逻辑。代码中使用了一个  res  列表来保存结果,我们需要确保删除连续相同字母的逻辑是正确的。

3. 最后,我们要确保结果输出的逻辑是正确的,输出删除后的字符串。

修改后的代码如下:
# 获取用户输入并确认输入的字符串不为空
s = input('请输入字符串:')
if not s:
    print("输入的字符串不能为空")
else:
    s = str(s)
    res = []
    for each in s:
        if res and res[-1].lower() == each.lower() and res[-1] != each:
            res.pop()
        else:
            res.append(each)

    # 输出删除后的结果
    for each in res:
        print(each, end='')

这样修改后的代码应该能够正确地实现题目要求,并输出预期的结果。如果问题仍然存在,请提供具体的输入和输出样例,以便我们进一步帮助你找到问题所在。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 08:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表