小儿无赖 发表于 2023-8-6 11:41:14

代码求助

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

x = input("输入:")
y = []
row1 = "QWERTYUIOPqwertyuiop"
row2 = "ASDFGHJKLasdfghjkl"
row3 = "ZXCVBNMzxcvbnm"

for i in x:
    if row1.count(i) == 1:
      for j in i:
            if row1.count(i) == 1:
                y.append(x)
    elif row2.count(i) == 1:
      for j in i:
            if row2.count(i) == 1:
                y.append(x)
    elif row3.count(i) == 1:
      for j in i:
            if row3.count(i) == 1:
                y.append(x)

print("输出:", y)不知道怎么使输入的变为一个字符串,列表和字符串的一些用法有点混淆,求大佬指点迷津

Mike_python小 发表于 2023-8-6 11:41:29

在这段代码中,你可以使用split()函数将输入的字符串分割成单个单词,并使用join()函数将列表中的元素连接成一个字符串。另外,在遍历字符串时,你可以直接使用字符进行比较,无需使用索引。

下面是修改后的代码:


x = input("输入:")
y = []
row1 = "QWERTYUIOPqwertyuiop"
row2 = "ASDFGHJKLasdfghjkl"
row3 = "ZXCVBNMzxcvbnm"

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

for word in words:
    if word in row1:
      for letter in word:
            if letter in row1:
                y.append(word)
                break
    elif word in row2:
      for letter in word:
            if letter in row2:
                y.append(word)
                break
    elif word in row3:
      for letter in word:
            if letter in row3:
                y.append(word)
                break

output = " ".join(y)# 将列表中的单词连接成一个字符串,以空格分隔
print("输出:", output)


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

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

如果回答对你有帮助,请给我一个最佳答案!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}

学习编程中的Ben 发表于 2023-8-6 11:41:29

你的代码中存在一些问题,让我们一起来解决它们。首先,你可以使用str.join()方法将输入转换为一个字符串。其次,在循环遍历单词的时候,你需要使用索引来获取每个字母。

下面是修改后的代码:

x = input("输入:")
y = []
row1 = "QWERTYUIOPqwertyuiop"
row2 = "ASDFGHJKLasdfghjkl"
row3 = "ZXCVBNMzxcvbnm"

# 将输入转换为字符串
x = "".join(x.split())

for word in x.split():
    if row1.count(word) == 1:
      for j in range(len(word)):
            if row1.count(word) == 1:
                y.append(word)
                break
    elif row2.count(word) == 1:
      for j in range(len(word)):
            if row2.count(word) == 1:
                y.append(word)
                break
    elif row3.count(word) == 1:
      for j in range(len(word)):
            if row3.count(word) == 1:
                y.append(word)
                break

print("输出:", y)


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

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

如果回答对你有帮助,请给我一个最佳答案!{:10_254:}{:10_254:}{:10_254:}

isdkz 发表于 2023-8-6 11:41:29

你的代码有一些问题。首先,输入函数返回的是一个字符串,所以你不需要将其转换为字符串。其次,你的循环中的索引应该是整数,而不是字符串。此外,你应该使用索引来访问字符串中的字符,而不是使用元素本身。最后,你应该将结果打印在循环之外,以便在循环结束后打印出所有的单词。

下面是修复后的代码:

x = input("输入:")
y = []
row1 = "QWERTYUIOPqwertyuiop"
row2 = "ASDFGHJKLasdfghjkl"
row3 = "ZXCVBNMzxcvbnm"

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

for word in words:
    if row1.count(word) == 1:
      for char in word:
            if row1.count(char) == 1:
                y.append(word)
                break
    elif row2.count(word) == 1:
      for char in word:
            if row2.count(char) == 1:
                y.append(word)
                break
    elif row3.count(word) == 1:
      for char in word:
            if row3.count(char) == 1:
                y.append(word)
                break

print("输出:", y)


这个修复后的代码将输入的字符串分割成单词,并逐个检查每个单词是否只包含同一行的字母。如果是,则将该单词添加到结果列表中。最后,打印出结果列表。

小儿无赖 发表于 2023-8-6 11:46:34

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

结果没有按要求来

isdkz 发表于 2023-8-6 11:49:48

你的代码中有一些错误,我将帮你修正它们。首先,你需要将输入的字符串分割成单词,然后检查每个单词的每个字母是否都在同一行。这是修正后的代码:

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


for word in x:
    if all(letter in row1 for letter in word):
      y.append(word)
    elif all(letter in row2 for letter in word):
      y.append(word)
    elif all(letter in row3 for letter in word):
      y.append(word)


print("输出:", y)



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


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

小儿无赖 发表于 2023-8-6 11:55:46

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

有个小错误,split哪里应该使split(",")

isdkz 发表于 2023-8-6 11:57:55

小儿无赖 发表于 2023-8-6 11:55
有个小错误,split哪里应该使split(",")

也不算错误吧,看你以什么格式输入了
页: [1]
查看完整版本: 代码求助