剑指offer-新手必刷题 (牛客网,力扣)——day 1

目录

1.在输入的区间判断有哪些是素数; 

1)解决思路;

2)输入一个例子

2. 用Python计算数字列表的和

1)、解决思路:

 3.去除列表中重复的元素

1)基本思想

2)代码实现

4.对成绩排序

5.Python读取成绩文件排序

1)解决思路:

2)解决顺序

3)代码实现过程: 


1.在输入的区间判断有哪些是素数; 

1)解决思路;

(1).先构造一个输入一个区间的表达式;

(2).然后定义一个函数,将每个区间内的每个数字遍历;

(3).将遍历到的数字进行判断,即定义一个判断是素数的函数。

##输入begin到end区间的数,判断哪一个是素数
begin,end=map(int,input().split())

##判断该数是否是素数
def is_prime(number):
    if number==1:
        return False
    if number==2:
        return True
    else:
        for i in range(2 ,number):
            if number%i==0:
                return False
    return True
    
##将每个数遍历
def prime(begin,end):
    for number in range(begin,end+1):
        if is_prime(number):
            print("有素数{}".format(number))

prime(begin,end)

2)输入一个例子

(1).以输入“1 10”为例

(2).输出结果为:

2. 用Python计算数字列表的和

1)、解决思路:

灵活利用Python语言的特点,列表有“sum()”功能,map()它接收一个函数 f (int()函数将字符串转化为整形数字)和一个 可迭代对象(input().split()将输入的字符串用空格分开,从而形成单独的字符)

因此代码可以用一句表达式实现:

sum(list(map(int,input().split())))

 3.去除列表中重复的元素

1)基本思想

首先就是再定义一个函数,将本来的每个数组遍历,然后依次将每个元素(不在result中的)存入result列表中。

排序的对象为字典,但是我们排序要按照成绩(“grade”)进行排序,主要用lambda()函数和sorted()函数,

sorted 语法:

sorted(iterable, cmp=None, key=None, reverse=False)
iterable -- 可迭代对象。

cmp -- 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。

key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。

reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。

2)代码实现

a=[1,33,33,44,6]
def pop_elments(a):
    result=[]
    for item in a:
        if item not in result:
            result.append(item)
    return result

print("去掉重复的元素之后就是{}".format(pop_elments(a)))

4.对成绩排序

def Resorted_students(students):
    result=sorted(students,key=lambda x:x["grade"],reverse=True)

    return result


students=[{"num":101,"name":"xiaozhang","grade":3},
   {"num":102,"name":"xiaozhang","grade":5},
   {"num": 103, "name": "xiaozhang", "grade": 2},
   {"num": 104, "name": "xiaozhang", "grade": 4}
   ]
print("排序之前数据{},排序之后的数据{}".format(students,Resorted_students(students)))

 排完顺序后的结果为:

排序之前数据[{'num': 101, 'name': 'xiaozhang', 'grade': 3}, {'num': 102, 'name': 'xiaozhang', 'grade': 5}, {'num': 103, 'name': 'xiaozhang', 'grade': 2}, {'num': 104, 'name': 'xiaozhang', 'grade': 4}],
排序之后的数据[{'num': 102, 'name': 'xiaozhang', 'grade': 5}, {'num': 104, 'name': 'xiaozhang', 'grade': 4}, {'num': 101, 'name': 'xiaozhang', 'grade': 3}, {'num': 103, 'name': 'xiaozhang', 'grade': 2}]

5.Python读取成绩文件排序

1)解决思路:

先读入数据

再对数据排序

最后将新的顺序写入新的文件

2)解决顺序

step 1:在pycharm中创建test.py文件,

step 2:在pycharm中创建students_grade.txt,里面放一些学生的数据

3)代码实现过程: 

def Read_file():
    result = []
    with open("./students_grade.txt") as fin:
        for line in fin:
            line=line[:-1]#将每行的数据的末尾换行符去掉
            result.append(line.split(","))##需要将每一行的数据加入列表并且去掉“,”
    return result

def Soreted(datas):
    return sorted(datas,key=lambda x:int(x[2]),reverse=True)##在这里需要将字符转化为数字


def Write_file(datas):
    with open("sorted_students","w") as fout:
        for data in datas:
            fout.write(",".join(data)+"\n")

#读入文件
datas=Read_file()
print("读入文件后的数据为:",datas)

#对数据进行排序

datas=Soreted(datas)
print("读入的数据为:",datas)
#写入数据
Write_file(datas)

运行结果为:

读入文件后的数据为: [['001', 'xaioming', '980'], ['002', 'xiaoqian', '982'], ['003', 'xiaolong', '981'], ['004', 'xaiodong', '987']]
读入的数据为: [['004', 'xaiodong', '987'], ['002', 'xiaoqian', '982'], ['003', 'xiaolong', '981'], ['001', 'xaioming', '980']]

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值