2021-01-20 python编程题(1/100)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021-01-20 python编程题(1/100)相关的知识,希望对你有一定的参考价值。
参考技术A问题:编写一个程序,它将找到所有这些数字,可被7整除,但不是5的倍数,2000年至3200年(包括在内)。得到的数字应按逗号分隔的顺序打印在一行上(1级)
方法:使用for循环+if语句+join()+append()
\'\'\'
def number():
num_list = []
for i in range(2000,3201):
if i %7 == 0 and i %5 != 0:
num_list.append(str(i))
num = \',\'.join(num_list)
return num
if name == \' main \':
print(number())
\'\'\'
容易错的点:由于循环取的int类型,而join()只能处理str等可迭代类型,因此需要将i转换为str类型,否则会报错
记一次面试过程中的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种方法代码最少,效率最高。
各位读者还有什么方法,可以在后面评论
以上是关于2021-01-20 python编程题(1/100)的主要内容,如果未能解决你的问题,请参考以下文章