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

这几天面试过程中遇到一道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种方法代码最少,效率最高。

各位读者还有什么方法,可以在后面评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值