鱼C论坛

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

[已解决]代码求助

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

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

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

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

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

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

print("输出:", y)
不知道怎么使输入的变为一个字符串,列表和字符串的一些用法有点混淆,求大佬指点迷津
最佳答案
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 。

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[0] in row1:        for letter in word:            if letter in row1:                y.append(word)                break    elif word[0] in row2:        for letter in word:            if letter in row2:                y.append(word)                break    elif word[0] in row3:        for letter in word:            if letter in row3:                y.append(word)                breakoutput = " ".join(y)  # 将列表中的单词连接成一个字符串,以空格分隔print("输出:", output)
在修改后的代码中,我使用split()函数将输入的字符串分割成单个单词,并使用join()函数将列表中的单词连接成一个字符串,中间以空格分隔。在遍历每个单词时,我直接使用in运算符来判断字母是否属于某一行,无需使用count()函数和索引。

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

如果回答对你有帮助,请给我一个最佳答案!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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[0]) == 1:        for j in range(len(word)):            if row1.count(word[j]) == 1:                y.append(word)                break    elif row2.count(word[0]) == 1:        for j in range(len(word)):            if row2.count(word[j]) == 1:                y.append(word)                break    elif row3.count(word[0]) == 1:        for j in range(len(word)):            if row3.count(word[j]) == 1:                y.append(word)                breakprint("输出:", y)
在修改后的代码中,我使用了str.split()方法将输入按空格分割成单词,并使用str.join()方法将它们重新组合为一个字符串。然后,我使用range(len(word))来获得每个字母的索引,并在判断条件中使用word[j]

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

如果回答对你有帮助,请给我一个最佳答案!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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[0]) == 1:
        for char in word:
            if row1.count(char) == 1:
                y.append(word)
                break
    elif row2.count(word[0]) == 1:
        for char in word:
            if row2.count(char) == 1:
                y.append(word)
                break
    elif row3.count(word[0]) == 1:
        for char in word:
            if row3.count(char) == 1:
                y.append(word)
                break

print("输出:", y)

这个修复后的代码将输入的字符串分割成单词,并逐个检查每个单词是否只包含同一行的字母。如果是,则将该单词添加到结果列表中。最后,打印出结果列表。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

结果没有按要求来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

有个小错误,split哪里应该使split(",")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

也不算错误吧,看你以什么格式输入了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 17:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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