测试编程笔试题No.1-输入表格列的英文名称,返回其对应的数字序号

简介: 同一个字母,在不同的位置,对应的值不一样,字母A在个位对应的是1,在十位对应的是26 ,因此,联想到了进制的移位运算和进制之间的转换。

最近看到粉丝问我一个面试的笔试题,当时看了一下,只想到了大概思路,今天将这个题目分享给大家。


题目:编写一个函数,输入表格列的英文名称,返回其对应的数字序号。如输入A,输出1;输入B,输出2。字母A-Z对应的数字1-26。表格列名和数字的映射关系如下:

 

A
->
1
B
-> 2

...
Z
-> 26
AA
-> 27
AB
-> 28

...
AAA
-> 703
AAB
-> 704

...



微信图片_20220113211641.png


分析思路:

'''
** 表示乘方运算
AA  27  = 26**1 + 1 
AB  28  = 26**1 + 2
AAA 703 = 26**2 + 26**1 + 1   
AAB 704 = 26**2 + 26**1 + 2  
'''

从上面可以看出来,同一个字母,在不同的位置,对应的值不一样,字母A在个位对应的是1,在十位对应的是26 ,因此,联想到了进制的移位运算和进制之间的转换,这个题目可以考虑将每一位的值转换成26进制去处理。

步骤一:将字母转换成数字

{'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 5, 'F': 6, 'G': 7, 'H': 8, 'I': 9, 'J': 10, 'K': 11, 'L': 12, 'M': 13, 'N': 14, 'O': 15, 'P': 16, 'Q': 17, 'R': 18, 'S': 19, 'T': 20, 'U': 21, 'V': 22, 'W': 23, 'X': 24, 'Y': 25, 'Z': 26}

步骤二:编写函数 实现需求

mapdict = {'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 5, 'F': 6, 'G': 7, 'H': 8, 'I': 9, 'J': 10, 'K': 11, 'L': 12, 'M': 13, 'N': 14, 'O': 15, 'P': 16, 'Q': 17, 'R': 18, 'S': 19, 'T': 20, 'U': 21, 'V': 22, 'W': 23, 'X': 24, 'Y': 25, 'Z': 26}
def get_excelnumber(str):
    result = 0
    j=0
    for i in str[::-1]:
        result +=26**j*int(mapdict[i])
        j=j+1
    return result

经过测试,好像能达到效果。就是代码写的比较low,还可以继续优化。有没有bug就需要仔细测试下哈,思路应该是对的。

那个字母与数字的关系可以用python里面的推导式

mapdict ={chr(i+65):i+1 for i in range(26)}


再看看另一种写法(我朋友写的)


微信图片_20220113213735.jpg


编程这东西,还是得多练习,才能写出优雅的代码。大家有什么其他的问题,都可以公众号后台私聊,等我有空的时候来跟大家互相学习交流。

相关文章
|
6月前
|
Java
【Java每日一题】— —第二十一题:编程把现实生活的手机事物映射成一个标准类Phone,并定义一个测试类PhoneDemo测试Phone类的功能
【Java每日一题】— —第二十一题:编程把现实生活的手机事物映射成一个标准类Phone,并定义一个测试类PhoneDemo测试Phone类的功能
|
6月前
|
存储 测试技术
LabVIEW编程开发PCB自动测试设备
LabVIEW编程开发PCB自动测试设备
51 1
|
2月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
44 2
|
1月前
|
安全 网络安全 数据安全/隐私保护
Python渗透测试之流量分析:流量嗅探工具编程
Python渗透测试之流量分析:流量嗅探工具编程
|
3月前
|
IDE Java 测试技术
揭秘Java高效编程:测试与调试实战策略,让你代码质量飞跃,职场竞争力飙升!
【8月更文挑战第30天】在软件开发中,测试与调试对确保代码质量至关重要。本文通过对比单元测试、集成测试、调试技巧及静态代码分析,探讨了多种实用的Java测试与调试策略。JUnit和Mockito分别用于单元测试与集成测试,有助于提前发现错误并提高代码可维护性;Eclipse和IntelliJ IDEA内置调试器则能快速定位问题;Checkstyle和PMD等工具则通过静态代码分析发现潜在问题。综合运用这些策略,可显著提升代码质量,为项目成功打下坚实基础。
58 2
|
3月前
|
存储 测试技术 数据库
Python接口自动化测试框架(练习篇)-- 函数编程(一)
本文通过实际的编程练习,讲解了面向过程编程的概念和应用,包括如何定义函数、处理文件读写以及实现用户注册功能,最终将这些过程封装成函数,体现了Python作为脚本语言的面向过程编程特性。
26 2
|
3月前
|
测试技术 Python
Python接口自动化测试框架(练习篇)-- 函数编程(二)
本文通过具体的编程练习,深入探讨了Python中的函数编程,包括如何定义函数、使用参数和返回值,以及函数式编程的技巧和应用,如使用lambda表达式和递归函数解决实际问题。
25 1
|
4月前
|
Java 数据库 Spring
Java编程问题之在测试中使用CGLIB创建代理类如何解决
Java编程问题之在测试中使用CGLIB创建代理类如何解决
|
4月前
测试语雀图片嵌入表格(不用通过)
测试语雀图片嵌入表格(不用通过)
|
5月前
|
算法 Linux 测试技术
Linux编程:测试-高效内存复制与随机数生成的性能
该文探讨了软件工程中的性能优化,重点关注内存复制和随机数生成。文章通过测试指出,`g_memmove`在内存复制中表现出显著优势,比简单for循环快约32倍。在随机数生成方面,`GRand`库在1000万次循环中的效率超过传统`rand()`。文中提供了测试代码和Makefile,建议在性能关键场景中使用`memcpy`、`g_memmove`以及高效的随机数生成库。
下一篇
无影云桌面