xy-xuan 发表于 2023-7-29 11:15:27

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

本帖最后由 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,s)为同一个字母的大小写,则这两个字母一并删除
举例: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='')


运行修改后的代码,应该能够得到符合题目要求的结果。如果还有其他问题,请随时提问。
如果问题已经解决,请设置最佳答案

isdkz 发表于 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='')


这样修改后的代码应该能够正确地实现题目要求,并输出预期的结果。如果问题仍然存在,请提供具体的输入和输出样例,以便我们进一步帮助你找到问题所在。
页: [1]
查看完整版本: 求助,27讲课后作业按照课程答案敲的代码,运行结果却不符合题目要求