2021-02-11 07:56:09
以下是软件测试工程师面试中常见的Python编程题目及解析,涵盖逻辑实现、算法应用及基础语法考察:
1. 数字组合问题题目:用1、2、3、4组成无重复数字的三位数,统计数量并输出所有组合。代码问题:原代码中if a !=b != c and a != c逻辑错误(未排除b == c的情况),且return在循环内导致提前退出。修正代码:
def sws(): e = [] for a in range(1, 5): for b in range(1, 5): for c in range(1, 5): if a != b and b != c and a != c: f = a * 100 + b * 10 + c e.append(f) return e, len(e)输出:共24个三位数(如123、124等)。
2. 统计字符出现次数题目:计算字符串中每个字符的出现次数。优化建议:使用字典提高效率,避前纯免重复遍历字符串。优化代码:
def cishu(s): count = {} for char in s: if char in count: count[char] += 1 else: count[char] = 1 for char, num in count.items(): print(f"'{char}'出现的次数为:{num}")3. 字符串去重并排序卖悔答题目:去除字符串重复字符后按编码排序。关键点:set去重,sort()按ASCII码排序。代码:
def we(): s = "ajldjlajfdljfddd" unique_chars = sorted(set(s)) print(''.join(unique_chars)) # 输出:adfjl4. 冒泡排序题目:实现列表从小到大排序。优化:添加swapped标志减少无效比较。代码:
def maopao(lst): n = len(lst) for i in range(n): swapped = False for j in range(0, n-i-1): if lst[j] > lst[j+1]: lst[j], lst[j+1] = lst[j+1], lst[j] swapped = True if not swapped: break return lst5. 列表元素对称交换题目:交换列表首尾对称位置的元素。注意:原代码未处理空列表或单元素列表。健壮性改进:
def huan(lst): for i in range(len(lst) // 2): lst[i], lst[-i-1] = lst[-i-1], lst[i] return lst6. 回文字符串判断题目:检查字符串是否为回文(正反相同)。优化:直接比较字符串与其反转。代码:
def is_palindrome(s): s = ''.join(filter(str.isalnum, s)).lower() # 忽略非字母数字和大小写 return s == s[::-1]7. 小球弹跳高度计算题目:计算第10次落地时的下落高度及总运动距离。逻辑:每次弹起高度为前一次的一半,总距离需累加每次弹起和下落。代码:
def ball_bounce(): height = 100 total_distance = 0 for _ in range(10): total_distance += height height /= 2 if _ < 9: # 第10次落地前无中慧需加弹起距离 total_distance += height return height, total_distance8. 纸张折叠次数题目:计算纸张厚度超过珠峰高度(8848.8米)所需折叠次数。数学:厚度呈指数增长,用对数计算。代码:
import mathdef fold_times(): thickness = 0.001 target = 8848.8 return math.ceil(math.log2(target / thickness))9. 字符分类统计题目:统计字符串中大写字母、小写字母、数字及其他字符数量。改进:使用isupper()、islower()、isdigit()方法。代码:
def count_chars(s): upper = lower = digit = other = 0 for char in s: if char.isupper(): upper += 1 elif char.islower(): lower += 1 elif char.isdigit(): digit += 1 else: other += 1 print(f"大写字母:{upper},小写字母:{lower},数字:{digit},其他:{other}")面试建议掌握这些题目能帮助应对测试开发岗位的编程考察,重点体现逻辑思维和代码实现能力。