记一次面试过程中的Python编程题

   日期:2024-01-17     浏览:41    评论:0    

这几天面试过程中遇到一道Python编程题,题目如下:

面试中遇到一个Python编程问题:一个字符串,将里面的数字取出来,如果第一个数字前面是+,表示整个数字为正数,如果第一个数字前面是-,表示数字为负数,数字不能越界

1.使用循环,最笨的办法

# coding = 'utf-8'
# @作者: zach # @时间:2020/5/8 0008 17:36 # @文件:一道面试题.py import sys import re digit = '0123456789' str0 = '-b-03dd2+349' symbol = '+-' def get_digit(string): num = '' syb = '' #获取数字 for i in range(len(string)): if string[i] in digit: num += string[i] #获取正负号 for j in range(len(string)): if string[j] in symbol and string[j+1] in digit: syb = string[j] break num = syb + num num = int(num) #判断是否越界 if abs(num) > sys.maxsize: return "" print("整数越界") else: return int(num) n = get_digit(str0) print(n)

运行结果:

2.使用filter函数

# coding = 'utf-8'
# @作者: zach
# @时间:2020/5/8 0008 17:36 # @文件:一道面试题.py import sys import re #通过filter函数获取 num = filter(str.isdigit, str0) num = ''.join(list(num)) print(num) for j in range(len(str0)): if str0[j] in symbol and str0[j+1] in digit: sym = str0[j] break num = sym + num print(int(num))

运行结果:

3.使用正则表达式获取

# coding = 'utf-8'
# @作者: zach # @时间:2020/5/8 0008 17:36 # @文件:一道面试题.py import sys import re num = re.findall(r'(-?\d+)', str0) num = ''.join(num) print(int(num))

运行结果:

上面3种方法以第3种方法代码最少,效率最高。

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服