全球主机交流论坛
标题: python面试题,mjj有多少人能答对 [打印本页]
作者: m4rs 时间: 2021-12-24 02:32
标题: python面试题,mjj有多少人能答对
题目:
将“873,282|8” 和“1731,1010” 中的“873” “282” “1731” “1010” 分别提取出来。
提取两个字符串必须用同一段代码完成。
这是我今天遇到的面试题,有多少mjj能写出来呀
作者: luckycat 时间: 2021-12-24 02:33
正则呗
作者: oliver666 时间: 2021-12-24 02:34
这…一个正则就搞定了吧
作者: luckycat 时间: 2021-12-24 02:39
\d{3,4}
作者: locker 时间: 2021-12-24 02:47
s.replace("|8","").split(",")
作者: dragonfsky 时间: 2021-12-24 02:57
正则就行了
作者: 法拉利 时间: 2021-12-24 02:59
判断数字个数,奇数就减1,偶数不变,然后除2呗
作者: baidu 时间: 2021-12-24 03:13
肉眼提取
作者: konololi 时间: 2021-12-24 03:21
不会python
看我bash:
cat input|sed -e 's/|.*//'|awk -F ',' '{print $1,$2}'
作者: image 时间: 2021-12-24 03:25
本帖最后由 image 于 2021-12-24 03:27 编辑
- res = []
- o = ''
- for i,v in enumerate(str):
- if v.isnumeric():
- o += v
- else:
- res.append(o)
- if v == ',':
- o = ''
- else:
- break
- if i == len(str) - 1:
- res.append(o)
- print (res)
复制代码
作者: acpp 时间: 2021-12-24 03:39
(, 下载次数: 4)
作者: mikasa 时间: 2021-12-24 03:52
还是你在行
作者: maxkvm 时间: 2021-12-24 04:07
能回答出的才是真实力
作者: imtoken 时间: 2021-12-24 04:43
image 发表于 2021-12-24 03:25
这么长,,,,
作者: image 时间: 2021-12-24 06:19
因为其他的都在抖机灵 只适用于楼主给的俩例子 给别的数据 跑起来直接就崩了, 面试你肯定不能这么写的。
当然 可能也有别的更简洁的适用代码 我也想看, 我这个没任何算法 谁能想出个算法的应该就简单
作者: 灰常的灰 时间: 2021-12-24 06:21
奇**技巧毫无意义
作者: 深海空间 时间: 2021-12-24 07:47
可以吗

作者: sortie 时间: 2021-12-24 07:47
这题出的…是我直接走人
作者: sRGB 时间: 2021-12-24 09:05
本帖最后由 sRGB 于 2021-12-24 09:56 编辑

def strtok(str, sep):
for s in sep:
str = str.replace(s, ',')
l = str.split(',')
return l

作者: honus 时间: 2021-12-24 09:06
split
作者: amao000765 时间: 2021-12-24 09:17
原本看大家天天都是吹牛币,没想到正正要用技术的时候 发现吹牛币的只有我。。。。。。。
作者: mikasa 时间: 2021-12-24 10:39
本帖最后由 mikasa 于 2021-12-24 10:48 编辑
[i for i in re.split(",|\|",s) if len(i)>2]
作者: vne 时间: 2021-12-24 10:40
大佬
作者: dongshuyuu 时间: 2021-12-24 10:44
思路清奇 
作者: HOH 时间: 2021-12-24 10:48
本帖最后由 HOH 于 2021-12-24 10:56 编辑
既然是指定这两个数组那办法还不简单吗?先割掉|再割掉,就完事了,这有什么难度莫名其妙的
(, 下载次数: 0)
不知道py怎么写,应该都差不多,大概就这意思
作者: mikasa 时间: 2021-12-24 13:55
这样写是“|”后面的全都不要吗?
作者: locker 时间: 2021-12-24 21:51
其实我就是对lz这种题目表达一下不屑,不给数据结构定义、只给俩例子,那就是让别人猜结构。反正都是猜,那当然怎么简单怎么来喽。
比如说凭什么舍弃"|8"?是因为竖线后面都舍弃?是因为没有配成对?是因为8小于某个阈值?是因为只有一个字符太短?还是单纯因为看"|8"不顺眼?我猜就是看它不顺眼,所以直接replace掉。
又比如,lz并没有说提取的必须是数字,万一给来个"Hello,world|8",要提取"Hello","world"吗?退一步说,就算是数字,也不一定是十进制,比如来个0x8F;就算是十进制,你还得考虑负数、小数、科学记数法等等,比如来个-1.2E+9。
这类坑爹事我遇到过不止一次了,所以对于字符串,要么提供数据定义,不然我不会去猜测。
作者: mikasa 时间: 2021-12-25 13:33
本帖最后由 mikasa 于 2021-12-25 13:35 编辑
确实,楼主这个题问的简直意义不明,连写出的代码是为了实现怎样的目的都不说。
作者: ccfer 时间: 2021-12-25 13:55
你这太牛批了,我看了就笑翻了
作者: ccfer 时间: 2021-12-25 13:57
本帖最后由 ccfer 于 2021-12-25 14:01 编辑
这题目和py几乎无关,就是个RegEx
作者: imxiaolong 时间: 2021-12-25 14:00
你们都在说啥
作者: 929900276 时间: 2021-12-25 14:18
[img]%5Burl=https://imgtu.com/i/TUcPmQ%5D
[/url][/img]
作者: 929900276 时间: 2021-12-25 14:19
([^,]*),([^|]*)
作者: lzs5240 时间: 2021-12-25 14:24
str.split("|")[0].split(",")
作者: wop 时间: 2021-12-25 15:48
- a = '873,282|8'
- b = '1731,1010'
- def get_num(num_str):
- num_list = []
- n = ''
- for i in num_str:
- if i != ',' and i != '|':
- n += i
- else:
- if len(n) > 2:
- num_list.append(n)
- n = ''
- if len(n) > 2:
- num_list.append(n)
- return num_list
- get_num(a)
- get_num(b)
- '''
- 输出:
- ['873', '282']
- ['1731', '1010']
- '''
- 大力出奇迹
复制代码
作者: 萌新酱 时间: 2021-12-25 16:15
(, 下载次数: 0)
作者: 蜗牛也是牛 时间: 2021-12-25 16:46
哈哈,我也想这样回答,反正也没说明用途
作者: image 时间: 2021-12-27 13:33
确实 我当时也是这么想的。。。 具体出题的时候确实跟你说的一样 楼主给的东西太缺失了。
我也是偷懒了 懒得打这么多字说
作者: image 时间: 2021-12-27 13:34
恩 楼主没说明 我也跟着偷懒了。。。
| 欢迎光临 全球主机交流论坛 (/) |
Powered by Discuz! X3.4 |