练习:电话拨号键盘的字母组合(一个缩进给我惹了麻烦)


  • 我的CSDN主页
  • My Python 学习个人备忘录

       练习:给定不大于4位的数字(2~9),输出所有的键面字母电话拨号键盘键面字母组合。


    1. 题目
    2. 代码运行效果
    3. 完整代码
    4. 一个缩进的麻烦
    5. 正整数注释

    练习题目

    练习:电话拨号键盘的字母组合(一个缩进给我惹了麻烦)_第1张图片


    回首页

    代码运行效果

    练习:电话拨号键盘的字母组合(一个缩进给我惹了麻烦)_第2张图片

    练习:电话拨号键盘的字母组合(一个缩进给我惹了麻烦)_第3张图片

    练习:电话拨号键盘的字母组合(一个缩进给我惹了麻烦)_第4张图片

    练习:电话拨号键盘的字母组合(一个缩进给我惹了麻烦)_第5张图片

    练习:电话拨号键盘的字母组合(一个缩进给我惹了麻烦)_第6张图片

    练习:电话拨号键盘的字母组合(一个缩进给我惹了麻烦)_第7张图片

    练习:电话拨号键盘的字母组合(一个缩进给我惹了麻烦)_第8张图片
    练习:电话拨号键盘的字母组合(一个缩进给我惹了麻烦)_第9张图片


    回首页

    python完整代码

    (如果从语句注释不能清楚作用,请评论区留言指教和探讨。)
    #/sur/bin/nve python 
    # coding: utf-8
    
    def phone_letter(s):
        '''转换数字为电话键i盘字母组合'''
        if s=='': #如果输入为空,返回空列表
            return [] #拦截输入为空,则返回空列表,后面的代码不用执,以提升代码效率。
        phone_letters = [
                'abc',
                'def',
                'ghi',
                'jkl',
                'mno',
                'pqrs',
                'tuv',
                'wxyz'
                ] #定义电话键盘字母映射列表
        if len(s)==1: #输入字符仅一个数字,返回所在键盘字母列表
            return list(phone_letters[int(s)-2]) #拦截输入一个数字,则返回值,后面的代码不用执行,以提升代码效 率。
        letters =[
                ' ',
                ' ',
                ' ',
                ' '
                ] #初始化四位数字字母映射列表(这里要注意,不可以置'',语句不会报错,但实际上并不执行,因没有元素供遍历。对语句语法,是无懈可击的,''也是字符。)
        k = 0
        for i in s:
            letters[k] = phone_letters[int(i)-2]
            k += 1
        result = [] #初始化最后输出字母映射组合列表
        for i in letters[0]:
            if letters[0]==' ':
                i = ''
            for j in letters[1]:
                if letters[1]==' ':                                        j = ''
                for m in letters[2]:
                    if letters[2]==' ':                                        m = ''
                    for n in letters[3]:
                        if letters[3]==' ':                                        n = ''
                        result.append(''.join((i,j,m,n)))
        return result #不定输入的2~4个数字,我目前还想不到更好的解决办法,只好傻傻地枚举。
    
    while True:
        numbers = input('\n\n输入数字组合(0~9):').strip() #接收键盘输入并去除首尾空格
        flag = True
        for i in numbers: #判断输入合规,否则报错重输
            if (i not in '23456789') or len(numbers)>4:
                flag = False
        if flag is True:
            break
        input(f'\n{"﹊"*21}\n{"输入错误!请重试".rjust(20)}\n{"﹊"*21}')
        continue
    print(f'\n\n\n{"":10}“{numbers}”电话键盘字母组合\n{"﹊"*21}\n{phone_letter(numbers)}\n{"﹊"*21}')
    

    回首页

    一个缩进给我带来了麻烦Ծ‸Ծ

       我把最后的结果输出语句前面打了四个空格的缩进,怎么也等不来结果输出
    while True:
        numbers = input('\n\n输入数字组合(0~9):').strip() #接收键盘输入并去除首尾空格
        flag = True
        for i in numbers: #判断输入合规,否则报错重输
            if (i not in '23456789') or len(numbers)>4:
                flag = False
        if flag is True:
            break
        input(f'\n{"﹊"*21}\n{"输入错误!请重试".rjust(20)}\n{"﹊"*21}')
        continue
    print(f'\n\n\n{"":10}“{numbers}”电话键盘字母组合\n{"﹊"*21}\n{phone_letter(numbers)}\n{"﹊"*21}')
    

    练习:电话拨号键盘的字母组合(一个缩进给我惹了麻烦)_第10张图片

      后面再放一条print()语句,是可以出结果的!?
    while True:
        numbers = input('\n\n输入数字组合(0~9):').strip() #接收键盘输入并去除首尾空格
        flag = True
        for i in numbers: #判断输入合规,否则报错重输
            if (i not in '23456789') or len(numbers)>4:
                flag = False
        if flag is True:
            break
        input(f'\n{"﹊"*21}\n{"输入错误!请重试".rjust(20)}\n{"﹊"*21}')
        continue
        print(f'\n\n\n{"":10}“{numbers}”电话键盘字母组合\n{"﹊"*21}\n{phone_letter(numbers)}\n{"﹊"*21}')
    print(phone_letter(numbers))
    

    练习:电话拨号键盘的字母组合(一个缩进给我惹了麻烦)_第11张图片

       查来查去,竟然是在于那四个空格的缩进!那那样子,就处于while循环之内了,又在continue语句之后(就永远执行不到那条结果输出语句了)。
    while True:
        numbers = input('\n\n输入数字组合(0~9):').strip() #接收键盘输入并去除首尾空格
        flag = True
        for i in numbers: #判断输入合规,否则报错重输
            if (i not in '23456789') or len(numbers)>4:
                flag = False
        if flag is True:
            break
        input(f'\n{"﹊"*21}\n{"输入错误!请重试".rjust(20)}\n{"﹊"*21}')
        continue
    print(f'\n\n\n{"":10}“{numbers}”电话键盘字母组合\n{"﹊"*21}\n{phone_letter(numbers)}\n{"﹊"*21}')
    
       退去四个空格的缩进,最后输出结果“应声而出”。

    练习:电话拨号键盘的字母组合(一个缩进给我惹了麻烦)_第12张图片


    回首页

       正整数的释义。

    练习:电话拨号键盘的字母组合(一个缩进给我惹了麻烦)_第13张图片


    回首页

    我的博文推荐:

    • 尼姆游戏(聪明版/傻瓜式•人机对战)(当前阅读3205)(代码优化版)
    • 练习:字符串统计(坑:f‘string‘报错)(当前阅读1088)
    • 练习:求列表(整数列表)平衡点(当前阅读1314)
    • 密码强度检测器(当前阅读1052)
    • (当前阅读)
    推荐条件 点阅破千

    参考文章:


    上一篇: 求给定数列的第一个缺失的正整数
    下一篇: 一条语句定制输出


    回首页

    老齐漫画头像

    精品文章:

    • 正则表达式
    • 通过内置对象理解python
    • Python 完全自学手册
    • 海象运算符
    • Python中的 `!=`与`is not`不同
    • 学习编程的正确方法

    来源:老齐教室


    CSDN实用技巧博文:

    • 8个好用到爆的Python实用技巧

    你可能感兴趣的:(笔记)