鱼C论坛

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

[已解决]课里教的方法未被定义怎么办

[复制链接]
发表于 5 小时前 | 显示全部楼层 |阅读模式

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

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

x
如题,这个其实在另一区发过,但是最佳回答不小心设早了()只能再问一遍了()我真的没有在水帖()


字符串(I)的作业
原文有防复制乱码,只能贴图了()


结果报错了,我python3.12

代码
  1. s = "FishCcCode"
  2. s_list = []

  3. for load in s:
  4.     s_list.append(load)
  5.    
  6. for j in range(0 , len(s) - 2):
  7.     if s_list[j] == lower(s_list[j]) and s_list[j + 1] == upper(s_list[j]) or s_list[j] == upper(s_list[j]) and s_list[j + 1] == lower(s_list[j]):
  8.                 s_list.remove(s[j])
  9.                 s_list.remove(s[j + 1])
  10.                
  11. print(s_list)
复制代码


报错信息
  1. /data/data/org.qpython.qpy/files/bin/
  2. qpython3.sh "/storage/emulated/0/Android/
  3. data/org.qpython.qpy/files/PythonWorks/整
  4. 理字符串.py" && exit
  5. Traceback (most recent call last):
  6.   File "/storage/emulated/0/Android/data/org.qpython.qpy/files/PythonWorks/整理字 符串.py", line 8, in <module>
  7.     if s_list[j] == lower(s_list[j]) and s_list[j + 1] == upper(s_list[j]) or s_list[j] == upper(s_list[j]) and s_list[j + 1] == lower(s_list[j]):
  8.                     ^^^^^
  9. NameError: name 'lower' is not defined
  10. / $
复制代码


最佳答案
5 小时前
问题分析及解决方案

你的代码存在三个主要问题:

  • s_list未初始化:第二行代码 s_list = 未完成
  • 函数名使用错误:lower()/upper()是字符串方法,不是独立函数
  • 逻辑判断错误:条件判断对象是列表而非单个字符


修正后的代码

  1. s = "FishCcCode"
  2. s_list = list(s)  # 正确初始化列表

  3. i = 0
  4. while i < len(s_list)-1:
  5.     # 检查相邻字符是否符合大小写配对关系
  6.     current = s_list[i]
  7.     next_char = s_list[i+1]
  8.    
  9.     if (current.islower() and next_char == current.upper()) or \
  10.        (current.isupper() and next_char == current.lower()):
  11.         # 删除这对字符
  12.         del s_list[i:i+2]
  13.         i = max(0, i-1)  # 回退索引防止漏检
  14.     else:
  15.         i += 1

  16. print(''.join(s_list))
复制代码


代码说明
1. 使用 list(s) 将字符串转为列表
2. 使用 islower()/isupper() 判断字符大小写状态
3. 采用 while循环 动态处理列表长度变化
4. 使用 del 批量删除连续元素
5. 处理完字符对后回退索引,避免漏检新生成的相邻字符

输出结果:FishCode(成功删除中间的cC配对)

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 5 小时前 | 显示全部楼层    本楼为最佳答案   
问题分析及解决方案

你的代码存在三个主要问题:

  • s_list未初始化:第二行代码 s_list = 未完成
  • 函数名使用错误:lower()/upper()是字符串方法,不是独立函数
  • 逻辑判断错误:条件判断对象是列表而非单个字符


修正后的代码

  1. s = "FishCcCode"
  2. s_list = list(s)  # 正确初始化列表

  3. i = 0
  4. while i < len(s_list)-1:
  5.     # 检查相邻字符是否符合大小写配对关系
  6.     current = s_list[i]
  7.     next_char = s_list[i+1]
  8.    
  9.     if (current.islower() and next_char == current.upper()) or \
  10.        (current.isupper() and next_char == current.lower()):
  11.         # 删除这对字符
  12.         del s_list[i:i+2]
  13.         i = max(0, i-1)  # 回退索引防止漏检
  14.     else:
  15.         i += 1

  16. print(''.join(s_list))
复制代码


代码说明
1. 使用 list(s) 将字符串转为列表
2. 使用 islower()/isupper() 判断字符大小写状态
3. 采用 while循环 动态处理列表长度变化
4. 使用 del 批量删除连续元素
5. 处理完字符对后回退索引,避免漏检新生成的相邻字符

输出结果:FishCode(成功删除中间的cC配对)

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 小时前 From FishC Mobile | 显示全部楼层
我怎么这么蠢()
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-25 20:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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