鱼C论坛

 找回密码
 立即注册
查看: 2765|回复: 7

[已解决]代码求助

[复制链接]
发表于 2023-8-6 11:41:14 | 显示全部楼层 |阅读模式

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

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

x
  1. """只返回键盘同一行的字母打印的单词"""

  2. x = input("输入:")
  3. y = []
  4. row1 = "QWERTYUIOPqwertyuiop"
  5. row2 = "ASDFGHJKLasdfghjkl"
  6. row3 = "ZXCVBNMzxcvbnm"

  7. for i in x:
  8.     if row1.count(i[0]) == 1:
  9.         for j in i:
  10.             if row1.count(i[j]) == 1:
  11.                 y.append(x[i])
  12.     elif row2.count(i[0]) == 1:
  13.         for j in i:
  14.             if row2.count(i[j]) == 1:
  15.                 y.append(x[i])
  16.     elif row3.count(i[0]) == 1:
  17.         for j in i:
  18.             if row3.count(i[j]) == 1:
  19.                 y.append(x[i])

  20. print("输出:", y)
复制代码
不知道怎么使输入的变为一个字符串,列表和字符串的一些用法有点混淆,求大佬指点迷津
最佳答案
2023-8-6 11:49:48
你的代码中有一些错误,我将帮你修正它们。首先,你需要将输入的字符串分割成单词,然后检查每个单词的每个字母是否都在同一行。这是修正后的代码:

  1. x = input("输入:").split()
  2. y = []
  3. row1 = "QWERTYUIOPqwertyuiop"
  4. row2 = "ASDFGHJKLasdfghjkl"
  5. row3 = "ZXCVBNMzxcvbnm"


  6. for word in x:
  7.     if all(letter in row1 for letter in word):
  8.         y.append(word)
  9.     elif all(letter in row2 for letter in word):
  10.         y.append(word)
  11.     elif all(letter in row3 for letter in word):
  12.         y.append(word)


  13. print("输出:", y)
复制代码



这段代码首先将输入的字符串通过  split()  方法分割成单词列表。然后,对于列表中的每个单词,我们使用  all()  函数和生成器表达式来检查单词中的每个字母是否都在同一行。如果是,我们就将这个单词添加到输出列表  y  中。


注意, all()  函数会返回  True  如果所有的元素都为  True ,否则返回  False 。在这个例子中,如果单词中的所有字母都在同一行, all()  函数就会返回  True 。

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-8-6 11:41:29 | 显示全部楼层
在这段代码中,你可以使用split()函数将输入的字符串分割成单个单词,并使用join()函数将列表中的元素连接成一个字符串。另外,在遍历字符串时,你可以直接使用字符进行比较,无需使用索引。

下面是修改后的代码:
  1. x = input("输入:")
  2. y = []
  3. row1 = "QWERTYUIOPqwertyuiop"
  4. row2 = "ASDFGHJKLasdfghjkl"
  5. row3 = "ZXCVBNMzxcvbnm"
  6. words = x.split()  # 将输入的字符串分割成单个单词
  7. for word in words:
  8.     if word[0] in row1:
  9.         for letter in word:
  10.             if letter in row1:
  11.                 y.append(word)
  12.                 break
  13.     elif word[0] in row2:
  14.         for letter in word:
  15.             if letter in row2:
  16.                 y.append(word)
  17.                 break
  18.     elif word[0] in row3:
  19.         for letter in word:
  20.             if letter in row3:
  21.                 y.append(word)
  22.                 break
  23. output = " ".join(y)  # 将列表中的单词连接成一个字符串,以空格分隔
  24. print("输出:", output)
复制代码

在修改后的代码中,我使用split()函数将输入的字符串分割成单个单词,并使用join()函数将列表中的单词连接成一个字符串,中间以空格分隔。在遍历每个单词时,我直接使用in运算符来判断字母是否属于某一行,无需使用count()函数和索引。

希望这个解答对你有帮助!如果还有其他问题,请随时提问。

如果回答对你有帮助,请给我一个最佳答案!这对我非常重要!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-6 11:41:29 | 显示全部楼层
你的代码中存在一些问题,让我们一起来解决它们。首先,你可以使用str.join()方法将输入转换为一个字符串。其次,在循环遍历单词的时候,你需要使用索引来获取每个字母。

下面是修改后的代码:
  1. x = input("输入:")
  2. y = []
  3. row1 = "QWERTYUIOPqwertyuiop"
  4. row2 = "ASDFGHJKLasdfghjkl"
  5. row3 = "ZXCVBNMzxcvbnm"
  6. # 将输入转换为字符串
  7. x = "".join(x.split())
  8. for word in x.split():
  9.     if row1.count(word[0]) == 1:
  10.         for j in range(len(word)):
  11.             if row1.count(word[j]) == 1:
  12.                 y.append(word)
  13.                 break
  14.     elif row2.count(word[0]) == 1:
  15.         for j in range(len(word)):
  16.             if row2.count(word[j]) == 1:
  17.                 y.append(word)
  18.                 break
  19.     elif row3.count(word[0]) == 1:
  20.         for j in range(len(word)):
  21.             if row3.count(word[j]) == 1:
  22.                 y.append(word)
  23.                 break
  24. print("输出:", y)
复制代码

在修改后的代码中,我使用了str.split()方法将输入按空格分割成单词,并使用str.join()方法将它们重新组合为一个字符串。然后,我使用range(len(word))来获得每个字母的索引,并在判断条件中使用word[j]

希望这个解答对你有帮助!如果你还有其他问题,请随时提问。

如果回答对你有帮助,请给我一个最佳答案!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-6 11:41:29 | 显示全部楼层
你的代码有一些问题。首先,输入函数返回的是一个字符串,所以你不需要将其转换为字符串。其次,你的循环中的索引应该是整数,而不是字符串。此外,你应该使用索引来访问字符串中的字符,而不是使用元素本身。最后,你应该将结果打印在循环之外,以便在循环结束后打印出所有的单词。

下面是修复后的代码:

  1. x = input("输入:")
  2. y = []
  3. row1 = "QWERTYUIOPqwertyuiop"
  4. row2 = "ASDFGHJKLasdfghjkl"
  5. row3 = "ZXCVBNMzxcvbnm"

  6. words = x.split()  # 将输入的字符串分割成单词

  7. for word in words:
  8.     if row1.count(word[0]) == 1:
  9.         for char in word:
  10.             if row1.count(char) == 1:
  11.                 y.append(word)
  12.                 break
  13.     elif row2.count(word[0]) == 1:
  14.         for char in word:
  15.             if row2.count(char) == 1:
  16.                 y.append(word)
  17.                 break
  18.     elif row3.count(word[0]) == 1:
  19.         for char in word:
  20.             if row3.count(char) == 1:
  21.                 y.append(word)
  22.                 break

  23. print("输出:", y)
复制代码


这个修复后的代码将输入的字符串分割成单词,并逐个检查每个单词是否只包含同一行的字母。如果是,则将该单词添加到结果列表中。最后,打印出结果列表。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-6 11:46:34 | 显示全部楼层
isdkz 发表于 2023-8-6 11:41
你的代码有一些问题。首先,输入函数返回的是一个字符串,所以你不需要将其转换为字符串。其次,你的循环中 ...

结果没有按要求来
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-6 11:49:48 | 显示全部楼层    本楼为最佳答案   
你的代码中有一些错误,我将帮你修正它们。首先,你需要将输入的字符串分割成单词,然后检查每个单词的每个字母是否都在同一行。这是修正后的代码:

  1. x = input("输入:").split()
  2. y = []
  3. row1 = "QWERTYUIOPqwertyuiop"
  4. row2 = "ASDFGHJKLasdfghjkl"
  5. row3 = "ZXCVBNMzxcvbnm"


  6. for word in x:
  7.     if all(letter in row1 for letter in word):
  8.         y.append(word)
  9.     elif all(letter in row2 for letter in word):
  10.         y.append(word)
  11.     elif all(letter in row3 for letter in word):
  12.         y.append(word)


  13. print("输出:", y)
复制代码



这段代码首先将输入的字符串通过  split()  方法分割成单词列表。然后,对于列表中的每个单词,我们使用  all()  函数和生成器表达式来检查单词中的每个字母是否都在同一行。如果是,我们就将这个单词添加到输出列表  y  中。


注意, all()  函数会返回  True  如果所有的元素都为  True ,否则返回  False 。在这个例子中,如果单词中的所有字母都在同一行, all()  函数就会返回  True 。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-6 11:55:46 | 显示全部楼层
isdkz 发表于 2023-8-6 11:49
你的代码中有一些错误,我将帮你修正它们。首先,你需要将输入的字符串分割成单词,然后检查每个单词的每个 ...

有个小错误,split哪里应该使split(",")
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-6 11:57:55 | 显示全部楼层
小儿无赖 发表于 2023-8-6 11:55
有个小错误,split哪里应该使split(",")

也不算错误吧,看你以什么格式输入了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-31 21:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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