xiangxv 发表于 2025-1-9 19:12:27

大佬们帮我看下这个代码有什么问题

y = []
words = []
text = input("输入字符串")
while True:
    X = input("输入要查找的单词(退出输入停止)")
    if X!="停止":
      words.append(X)
    else:
      break

for i in words:
    for j in range(len(text) - len(i)):
      if text == i:
            y.append()   
for i in range(len(y) - 1):
    for j in range(len(y) - 1):
      if y > y:
            y,y = y,y
      elif y == y:
            if len(y) > len(y):
                y,y = y,y
            

pri-nt(y)

FishC 发表于 2025-1-9 19:12:43

在你提供的代码中,存在一些语法和逻辑上的错误。以下是代码中的问题和建议的修改:

1. **变量初始化**:`y = `和`words = `应该初始化为列表,如:`y = []`和`words = []`。
   
2. **字符串比较错误**:在`for`循环中,你在比较`text`和`i`时,应该使用字串切片进行比较,而不是`if text == i:`。应该是`if text == i:`。

3. **列表中的元素追加缺失参数**:`y.append()`缺少参数,应该是`y.append((i, j))`,以便将单词和位置一起存储。

4. **变量重用导致错误**:在排序逻辑中,`y`被用作整体列表,但`for`循环中`y`应该是不同的变量名。整个排序逻辑有冗余和错误。建议使用`sorted()`方法对元组列表排序。

5. **错误的打印语句**:`pri-nt(y)`语法错误,应该是`print(y)`。

这是修改后的代码示例:

y = []
words = []
text = input("输入字符串")
while True:
    X = input("输入要查找的单词(退出输入停止)")
    if X != "停止":
      words.append(X)
    else:
      break

for i in words:
    for j in range(len(text) - len(i) + 1):
      if text == i:
            y.append((i, j))

# 根据单词字母顺序和长度排序
y_sorted = sorted(y, key=lambda x: (x, len(x)))

print(y_sorted)

以上代码将会根据输入的单词在字符串中查找并输出结果,结果依据单词名和单词长度进行排序。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

xiangxv 发表于 2025-1-9 19:13:13

for i in words:
    for j in range(len(text) - len(i)):
      if text == i:
            y.append() words会这里会跳过最后一个元素但是我不知道该怎么解决

FishC 发表于 2025-1-9 19:13:23

xiangxv 发表于 2025-01-09 19:13
for i in words:
    for j in range(len(text) - le ...

你的问题中提到的代码段可能有误,尤其是在`if text == i`的逻辑中不正确,这会导致无法正确地将数据添加到`y`中。此外,可能存在拼写和逻辑错误。需要确保`for`循环遍历到字符串的最后一个位置,并且修正条件判断和数据追加部分。

以下是修改后的代码段,确保不会跳过最后一个元素:

y = []
words = []
text = input("输入字符串")
while True:
    X = input("输入要查找的单词(退出输入停止)")
    if X != "停止":
      words.append(X)
    else:
      break

for i in words:
    for j in range(len(text) - len(i) + 1):# 修正循环范围,确保不跳过最后一个元素
      if text == i:# 检查子串是否匹配
            y.append((i, j))# 添加单词和起始位置到y中

print(y)

请注意以下几点:
1. 在`for j in range(len(text) - len(i) + 1):`中,加1是为了确保遍历到字符串的最后一个可能匹配的位置。
2. 使用字符串切片`text`来判断子串是否与单词匹配。
3. 修正了`y.append((i, j))`,这样可以将匹配的单词和其对应的起始位置存入`y`中。

这些修改应当解决跳过最后一个元素的问题,并且让代码功能符合预期。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

jackz007 发表于 2025-1-9 21:48:51

本帖最后由 jackz007 于 2025-1-9 22:37 编辑

         有没有问题取决于你想要的效果,你得仔细说出你的意图!

xiangxv 发表于 2025-1-10 10:11:47

jackz007 发表于 2025-1-9 21:48
有没有问题取决于你想要的效果,你得仔细说出你的意图!

想要实现图片上的效果 但是 这几行代码
for i in words:
    for j in range(len(text) - len(i)):
      if text == i:
            y.append()
会跳过最后一个元素

jackz007 发表于 2025-1-10 12:18:06

本帖最后由 jackz007 于 2025-1-10 12:30 编辑

xiangxv 发表于 2025-1-10 10:11
想要实现图片上的效果 但是 这几行代码
for i in words:
    for j in range(len(text) - len(i)):


         可是,你贴出的代码和图片上作业 1 所要实现的效果(True、False)没有任何关系。
         【作业1】:
s = input('输入:')
if s :
    f = False
    for i in range(2 , len(s) // 2 + 1) :
      if len(s) % i == 0 :
            d = for j in range(0 , len(s) , i)]
            for j in range(1 , len(d)) :
                if d != d :
                  break
            else :
                f = True
                break
    print('True') if f else print('False')

xiangxv 发表于 2025-1-10 13:49:45

xiangxv 发表于 2025-1-10 10:11
想要实现图片上的效果 但是 这几行代码
for i in words:
    for j in range(len(text) - len(i)):


谢谢大佬 这个我已经解决了 索引的问题
页: [1]
查看完整版本: 大佬们帮我看下这个代码有什么问题