鱼C论坛

 找回密码
 立即注册
查看: 4787|回复: 65

[已解决]Python:每日一题 338

[复制链接]
发表于 2020-2-28 16:49:14 | 显示全部楼层 |阅读模式

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

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

x
今天的题目:


给定一个单词列表,返回可以在美国键盘(如下图)的一行上使用字母表键入的单词。

美国键盘.png

示例 1:

输入:["Hello", "Alaska", "Dad", "Peace"]
输出:["Alaska", "Dad"]


欢迎大家一起答题!
最佳答案
2020-2-28 17:09:25
  1. def func(list1):
  2.     set1 = set('qwertyuiop')
  3.     set2 = set('asdfghjkl')
  4.     set3 = set('zxcvbnm')
  5.     list2 = []
  6.     for each in list1:
  7.         temp = set(each.lower())
  8.         if temp.issubset(set1) or temp.issubset(set2) or temp.issubset(set3):
  9.             list2.append(each)
  10.     return list2
复制代码

本帖被以下淘专辑推荐:

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

使用道具 举报

发表于 2020-2-28 17:09:25 | 显示全部楼层    本楼为最佳答案   
  1. def func(list1):
  2.     set1 = set('qwertyuiop')
  3.     set2 = set('asdfghjkl')
  4.     set3 = set('zxcvbnm')
  5.     list2 = []
  6.     for each in list1:
  7.         temp = set(each.lower())
  8.         if temp.issubset(set1) or temp.issubset(set2) or temp.issubset(set3):
  9.             list2.append(each)
  10.     return list2
复制代码

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
zltzlt + 5 + 5

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2020-2-28 17:14:30 | 显示全部楼层
@zltzlt ,能不能解释清楚一点,我有点蒙,没读懂题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-28 17:18:04 | 显示全部楼层
  1. def fun338(lst):
  2.     top,middle,bottom='qwertyuiop','asdfghjkl','zxcvbnm'
  3.     result=[]
  4.     for i in lst:
  5.         if (not set(i.lower())-set(top)) or (not set(i.lower())-set(bottom)) or (not set(i.lower())-set(middle)):
  6.             result.append(i)
  7.     return result
复制代码

差集
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-28 17:20:39 | 显示全部楼层
  1. def fun338(lst):
  2.     top,middle,bottom='qwertyuiop','asdfghjkl','zxcvbnm'
  3.     result=[]
  4.     for i in lst:
  5.         if set(top)&set(i.lower())==set(i.lower()) or set(middle)&set(i.lower())==set(i.lower()) or set(bottom)&set(i.lower())==set(i.lower()):
  6.             result.append(i)
  7.     return result
复制代码

交集
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-28 17:21:51 | 显示全部楼层
本帖最后由 fan1993423 于 2020-2-28 20:00 编辑
  1. def fun338(lst):
  2.     top,middle,bottom='qwertyuiop','asdfghjkl','zxcvbnm'
  3.     result=[]
  4.     for i in lst:
  5.         if set(top)|set(i.lower())==set(top) or set(middle)|set(i.lower())==set(middle) or set(bottom)|set(i.lower())==set(bottom):
  6.             result.append(i)
  7.     return result
复制代码

并集
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-28 17:29:36 | 显示全部楼层
  1. def judge(word):
  2.     if word.isalpha():
  3.         word = set(word.lower())
  4.     else :
  5.         return False
  6.     part1, part2, part3 = 'qwertyuiop', "asdfghjkl", "zxcvbnm"
  7.     part_1, part_2, part_3 = 0, 0, 0
  8.     for each in word:
  9.         if each in part1:
  10.             part_1 += 1
  11.             if part_2 != 0 and part_3 != 0:
  12.                 return False
  13.         if each in part2:
  14.             part_2 += 1
  15.             if part_1 != 0 and part_3 != 0:
  16.                 return False
  17.         if each in part3:
  18.             part_3 += 1
  19.             if part_1 != 0 and part_2 != 0:
  20.                 return False
  21.     return True
  22.         
  23. words = eval(input("请输入列表单词"))
  24. data = []
  25. for word in words:
  26.     if judge(word):
  27.         data.append(word)
  28. print(data)
复制代码

我好菜
看看大佬代码

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
zltzlt + 1 + 1

查看全部评分

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

使用道具 举报

发表于 2020-2-28 17:38:01 | 显示全部楼层
  1. def func338(s:list) -> list:
  2.     keyboard = ["qwertyuiop", "asdfghjkl", "zxcvbnm"]
  3.     list1 = s
  4.     index = 0
  5.     for word_index in s:
  6.         string = word_index.lower()
  7.         for i in range(len(keyboard)):
  8.             if string[0] in keyboard[i]:
  9.                 index = i
  10.                 break
  11.         for i in string:
  12.             if i not in keyboard[index]:
  13.                 list1.remove(word_index)
  14.                 break
  15.     return list1
复制代码

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
zltzlt + 2 + 2

查看全部评分

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

使用道具 举报

发表于 2020-2-28 18:06:35 | 显示全部楼层
  1. def fun338(lst):
  2.     top,middle,bottom='qwertyuiop','asdfghjkl','zxcvbnm'
  3.     def istop_middle_botomm(s,t=''):
  4.         if s[0] in top and (t=='' or t=='top'):
  5.             try:
  6.                 return istop_middle_botomm(s[1:],'top')
  7.             except:
  8.                 return True
  9.         elif s[0] in middle and (t=='' or t=='middle'):
  10.             try:
  11.                 return istop_middle_botomm(s[1:],'middle')
  12.             except:
  13.                 return True
  14.         elif s[0] in bottom and (t=='' or t=='bottom'):
  15.             try:
  16.                 return istop_middle_botomm(s[1:],'bottom')
  17.             except:
  18.                 return True
  19.         else:return False
  20.     result=[]
  21.     for i in lst:
  22.         if istop_middle_botomm(i.lower()):result.append(i)
  23.     return result
复制代码

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
zltzlt + 5 + 5

查看全部评分

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

使用道具 举报

发表于 2020-2-28 18:09:35 | 显示全部楼层
  1. jianpan = [['q','w','e','r','t','y','u','i','o','p'],
  2. ['a','s','d','f','g','h','j','k','l'],
  3. ['z','x','c','v','b','n','m']]

  4. a = eval(input())

  5. d = list(map(lambda x:x.lower(),a))
  6. for i in d:
  7.     if i[0] in jianpan[0]:
  8.         if not set(i)<set(jianpan[0]):
  9.             d.remove(i)
  10.     elif i[0] in jianpan[1]:
  11.         if not set(i)<set(jianpan[1]):
  12.             d.remove(i)
  13.     elif i[0] in jianpan[2]:
  14.         if not set(i)<set(jianpan[2]):

  15.             d.remove(i)
  16. for i in a:
  17.     if i.lower() in d:
  18.         pass
  19.     else:
  20.         a.remove(i)
  21. print(a)
  22.         

复制代码

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
zltzlt + 2 + 2

查看全部评分

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

使用道具 举报

发表于 2020-2-28 18:41:37 | 显示全部楼层
  1. def f338(L:list)->list:
  2.     res=[]
  3.     L1=['QWERTYUIOP','ASDFGHJKL','ZXCVBNM']
  4.     for i in L:
  5.         L10,L11,L12=[],[],[]
  6.         for j in i:
  7.             if j.upper() in L1[0]:
  8.                 L10.append(j.upper())
  9.             elif j.upper() in L1[1]:
  10.                 L11.append(j.upper())
  11.             else:
  12.                 L12.append(j.upper())
  13.         if ''.join(L10).title() in L:
  14.             res.append(''.join(L10).title())
  15.         if ''.join(L11).title() in L:
  16.             res.append(''.join(L11).title())
  17.         if ''.join(L12).title() in L:
  18.             res.append(''.join(L12).title())
  19.     return res

  20. L=["Hello", "Alaska", "Dad", "Peace"]
  21. print(f338(L))
复制代码

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
zltzlt + 2 + 2

查看全部评分

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

使用道具 举报

 楼主| 发表于 2020-2-28 18:52:42 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-28 18:56:44 | 显示全部楼层
本帖最后由 zltzlt 于 2020-2-29 12:43 编辑


解答错误

输入:["Hello", "Alaska", "Dad", "Peace"]
输出:["Hello", "Alaska", "Dad"]
预期结果:["Alaska", "Dad"]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-28 19:34:08 | 显示全部楼层

解答错误

输入:['qaz', 'wsx', 'edc', 'rfv', 'tgb', 'yhn', 'ujm', 'ik', 'pklo', 'ppppppp']
输出:['wsx', 'rfv', 'yhn', 'ik', 'ppppppp']
预期结果:['ppppppp']
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-28 19:34:44 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-28 19:35:18 | 显示全部楼层
本帖最后由 kinkon 于 2020-2-29 00:26 编辑
  1. def f338(lst):
  2.     t = set("qwertyuiop")
  3.     m = set("asdfghjkl")
  4.     l = set("zxcvbnm")
  5.     n = []
  6.     for i in lst:
  7.         k = i.lower()
  8.         if set(k) & t == set(k) or set(k) & m == set(k) or set(k) & l == set(k):
  9.             n.append(k.title())
  10.     return n
  11.             
  12. print(f338(["Hello", "Alaska", "Dad", "Peace"]))           
复制代码

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
zltzlt + 2 + 2

查看全部评分

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

使用道具 举报

 楼主| 发表于 2020-2-28 19:35:29 | 显示全部楼层

解答错误

输入:['qaz', 'wsx', 'edc', 'rfv', 'tgb', 'yhn', 'ujm', 'ik', 'pklo', 'ppppppp']
输出:['wsx', 'rfv', 'yhn', 'ik', 'ppppppp']
预期结果:['ppppppp']
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-28 19:36:01 | 显示全部楼层

解答错误

输入:['qaz', 'wsx', 'edc', 'rfv', 'tgb', 'yhn', 'ujm', 'ik', 'pklo', 'ppppppp']
输出:[]
预期结果:['ppppppp']
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-28 19:37:00 | 显示全部楼层

解答错误

输入:['qaz', 'wsx', 'edc', 'rfv', 'tgb', 'yhn', 'ujm', 'ik', 'pklo', 'ppppppp']
输出:['Ppppppp']
预期结果:['ppppppp']
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-28 19:38:44 | 显示全部楼层

解题思路居然和你的很接近
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 01:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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