程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

【九宫格按键输入法】Python 实现

hfteth 2025-07-24 17:46:50 技术文章 4 ℃
def input_screen_display():
    digit_to_letters = {
        '0': [' '],
        '2': ['a', 'b', 'c'],
        '3': ['d', 'e', 'f'],
        '4': ['g', 'h', 'i'],
        '5': ['j', 'k', 'l'],
        '6': ['m', 'n', 'o'],
        '7': ['p', 'q', 'r', 's'],
        '8': ['t', 'u', 'v'],
        '9': ['w', 'x', 'y', 'z']
    }
    
    is_digit_mode = True
    result = []
    current_digit = None
    count = 0
    
    input_str = input("请输入字符序列(0-9、#、/):")
    
    for char in input_str:
        if char == '#':
            # 切换模式前处理之前的连续数字
            if not is_digit_mode and current_digit is not None:
                letters = digit_to_letters.get(current_digit, [])
                if letters:
                    letter = letters[(count - 1) % len(letters)]
                    result.append(letter)
                current_digit = None
                count = 0
            is_digit_mode = not is_digit_mode
        elif char == '/':
            if not is_digit_mode:
                if current_digit is not None:
                    letters = digit_to_letters.get(current_digit, [])
                    if letters:
                        letter = letters[(count - 1) % len(letters)]
                        result.append(letter)
                    current_digit = None
                    count = 0
        else:
            if is_digit_mode:
                result.append(char)
            else:
                if char in digit_to_letters:
                    if char == current_digit:
                        count += 1
                    else:
                        if current_digit is not None:
                            letters = digit_to_letters.get(current_digit, [])
                            if letters:
                                letter = letters[(count - 1) % len(letters)]
                                result.append(letter)
                        current_digit = char
                        count = 1
    
    # 处理剩余的连续数字
    if not is_digit_mode and current_digit is not None:
        letters = digit_to_letters.get(current_digit, [])
        if letters:
            letter = letters[(count - 1) % len(letters)]
            result.append(letter)
    
    print("屏幕显示结果:", ''.join(result))

# 调用函数
input_screen_display()


Tags:

最近发表
标签列表