修复Python键盘单行单词校验列表返回错误True/False的问题
原代码错误说明
- 仅定义了键盘第一行的字母列表,未覆盖第二、第三行字母,无法匹配跨行场景
- 未处理大小写问题:输入单词为大写时,和小写的字母列表无法匹配
- 核心判断逻辑错误:
ele.split()会将单个单词转为仅包含该单词的列表,和字母列表做<=比较属于完全错误的语法,无法判断单词字母是否属于目标行 - 未实现「同一行」的判断逻辑,仅错误比对了第一行字母
- 输出为字符串格式的'True'/'False',不符合布尔值输出的要求
修复后代码
# 定义键盘三行字母的集合 row1 = set('qwertyuiop') row2 = set('asdfghjkl') row3 = set('zxcvbnm') try: N = int(input("enter number of elements: ")) except ValueError: print("Invalid Input") exit() if N < 0: print("Invalid Input") else: words = input("enter the words separated by a space: ").split() if len(words) < N: print("Input words not enough") exit() final = [] # 取前N个单词做校验 for word in words[:N]: # 统一转小写消除大小写影响 word_chars = set(word.lower()) # 判断所有字母是否属于任意同一行键盘 if word_chars.issubset(row1) or word_chars.issubset(row2) or word_chars.issubset(row3): final.append(True) else: final.append(False) print(final)
输入示例参数N=3,输入单词为POTTER EQUITY LIRIL时,输出为[True, True, False],符合需求。
内容的提问来源于stack exchange,提问作者students
相关产品推荐
相关产品推荐

