精华内容
下载资源
问答
  • 第1 章 准备工作 教案 课程名称Python 编程基础 课程类别必修 适用专业大数据技术类相关专业 总学时48 学时其中理论24 学时实验24 学时 总学分3.0 学分 本章学时2 学时 一材料清单 1 Python 编程基础教材 2 配套PPT ...
  • Python编程基础测试题(一) 一填空题每题2分共20分 1Python内置函数_可以返回列表元组字典集合字符串以及range 对象中元素个数 2已知列表?x?=?[1?2?3]那么执行语句?x.insert(1?4?只有x的值为_ 3在循环语句中_语句的...
  • github上面的一个项目,分为level1,level2,level3 三个等级的难度。练习题1:随机生成一列数据,画出这些数据的分布、概率密度曲线,以及进行归一化、标准化之后的分布、概率密度曲线。解答:# 归一化、标准化、中心...

    github上面的一个项目,分为level1,level2,level3 三个等级的难度。

    练习题1:

    随机生成一列数据,画出这些数据的分布、概率密度曲线,以及进行归一化、标准化之后的分布、概率密度曲线。

    解答:

    # 归一化、标准化、中心化

    import numpy as np

    import matplotlib.pyplot as plt

    import seaborn as sns

    original_data = np.random.exponential(size = 1000)

    scaled_data = (original_data - original_data.min())/(original_data.max()-original_data.min())

    fig,ax = plt.subplots(1,2)

    sns.distplot(original_data,ax=ax[0]) #直方图

    ax[0].set_title("Original Data")

    sns.distplot(scaled_data,ax = ax[1])

    ax[1].set_title("Scaled Data")

    plt.show()

    original_data = 6*np.random.rand(1000)+7

    scaled_data = (original_data - original_data.mean())/original_data.std()

    fig,ax = plt.subplots(1,2)

    sns.distplot(original_data,ax=ax[0])

    ax[0].set_title("Original Data")

    sns.distplot(scaled_data,ax = ax[1])

    ax[1].set_title("Scaled Data")

    plt.show()

    练习题2:

    一个数据集 身高:1.7,1.8,1.9

    体重:70,80,90,分别进行归一化、标准化,看数据值及其分布图。

    练习题3:

    同题1,自动生成二维分布数据集,画图展示。进行归一化、标准化后,画图展示。

    解答:

    x = np.array([1.7,1.8,1.9,1.75,1.85])

    y = np.array([60,70,80,85,65])

    plt.scatter(x,y)

    plt.show()

    x_scaled = preprocessing.scale(x)

    y_scaled = preprocessing.scale(y)

    plt.scatter(x_scaled,y_scaled)

    plt.show()

    x_normalize = (x-x.min())/(x.max()-x.min())

    y_normalize = (y-y.min())/(y.max()-y.min())

    plt.scatter(x_normalize,y_normalize)

    plt.show()

    展开全文
  • Python编程考试问题

    2021-06-07 18:48:16
    从键盘输入一个整数n(1<n<=9),要用0至n之间不同的三个数构成一个三位数,编写程序统计这样的数共有几个</p>
  • 前段时间参加了优酷土豆2016实习生招聘的在线笔试环节,由于选择的是Python开发实习生,所以整个试卷全部是...题型概览整个笔试部分编程环节共有三道编程题,难度相差不大,考察Python编程的基本功和一般的算法和...

    前段时间参加了优酷土豆2016实习生招聘的在线笔试环节,由于选择的是Python开发实习生,所以整个试卷全部是Python相关的,光凭这种专一的程度,就足以落360几条街(想当初我投的360 C++实习岗位,结果笔试时冒出来PHP的题,我也是醉了)。闲言少叙,下面一起来看看今年实习的机试环节编程题。

    题型概览

    整个笔试部分编程环节共有三道编程题,难度相差不大,考察Python编程的基本功和一般的算法和程序设计思维,下面分别介绍这三道题。

    第一题 数字加密

    大意如下:输入num为四位数,对其按照如下的规则进行加密:

    1、每一位分别加5,然后分别将其替换为该数除以10取余后的结果

    2、将该数的第1位和第4为互换,第二位和第三位互换

    3、最后合起来作为加密后的整数输出

    例如: 输入:1000,输出:5556

    时间限制:1s 内存限制:16MB

    分析:

    此题说得有点啰嗦而且拗口,其实操作过程很简单,下面就它说的前两步进行展开和详细说明:

    第一步是给每一位都加5,然后除以10取余数,用这个余数替代原来的数,例如原来的某一位上的数是3,那么3+5%10=8,于是用8替换掉原来位上的3,就这么简单。

    第二步题上面说1位和4位互换,2位和3位互换,而输入固定只有4位,那说的直白一些就是把这个数的位颠倒过来了,本来是1234的位置,现在变成了4321位置,这块题目说成这样有混淆视听之嫌

    最后就更好说了,颠倒完了合成一个数输出就可以了。

    代码实现

    经过前面的分析,代码设计的逻辑就已经很清晰了。不过考虑到对输入的整数分离位不太方便,这里将它转成字符串再操作,最后再转成了整数。具体代码如下:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14#coding:utf-8

    def num_jiami(num):

    """

    输入num为四位数,操作,每一位加5,然后分别替换为该数除以10取余数后的结果,然后1位和4位交换,

    2位和3位交换,再合起来。

    """

    num_list=list(str(num))

    for i in [0,1,2,3]:

    num_list.append(str((int(num_list[0])+5)%10))

    num_list.pop(0)

    num_list.reverse()

    result="".join(num_list)

    return int(result)

    代码分析

    第一行设定编码字符集为utf-8,因为代码中含有中文。对于Python2.x的解释器,由于默认的字符集为ASCII,遇到中文会出现错误,所以要包含。接下来定义了一个函数,输入参数为num。第8行先讲num转为str类型,假如输入1000,现在就变成了字符串”1000”,然后经过list方法后编程了单个字母组成的列表,具体为:["1’,’0’,’0’,’0’],这就完成了按位分割的功能,而且列表操作起来很方便。9到11行对列表中的每个数加5除以10再取余,这里没有pop再insert,而是一直pop列表首部元素,然后再尾部添加,这样操作的结果与前一种效果是一样的,这样操作完成后,对于["1’,’0’,’0’,’0’]来说,将会变成["6’,’5’,’5’,’5’]。第12行将列表逆置,对于["6’,’5’,’5’,’5’],就会变为["5’,’5’,’5’,’6’]。第13行通过str类的join方法将["5’,’5’,’5’,’6’]合成字符串”5556”,最后一行转为int类型再输出。

    整个过程比较简单,不过为了提高运行效率,上面有两处代码看似拖沓实则有意而为之:for循环处,

    1for i in [0,1,2,3]

    1for i in range(4)

    要更高效;最后得到result处没有将整个列表元素依次相加,而是采用了join方法,也是由于join操作更有效率。

    第二题 求字符串的全排列

    输入:一个字符串 输出:该字符串的全排列

    如:输入:’abc’ 输出:abc,acb,bac,bca,cab,cba

    时间限制:1s 内存限制:16MB

    分析

    这道题没什么好分析的,是一个很常见的全排列实现,下面给出递归的实现

    代码实现1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18#coding:utf-8

    def permutation(result,strs,list):

    if len(list)==1:

    result.append(strs+list[0])

    else:

    for temp_str in list:

    temp_list=list[:]

    temp_list.remove(temp_str)

    permutation(result,strs+temp_str,temp_list)

    def getshit(data):

    list_input=list(data)

    result=[]

    permutation(result,"",list_input)

    pp=",".join(result)

    print pp

    第三题 字符串解密

    大意为:给定一个字符串作为输入,将其中的数字用数字前近邻的字母序列进行替换,字母序列重复的次数等于该数字。最后将字符串输出。

    例如: 输入:’a2bc3d1’ 输出:’aabcbcbcd’

    时间限制:1s 内存限制:16MB

    分析

    这道题题目和第一题有一点遥相呼应的味道,第一题加密,这一题解密。虽然规则不同,但是字符串操作的方式基本不变。下面给出实现代码。

    代码实现1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17def com_baiyi_decode(str):

    length=len(str)

    #sys.stdout(length)

    i=0

    temp_dir=[]

    result=""

    while i < length:

    if str[i] in ["0","1","2","3","4","5","6","7","8","9"]:

    if temp_dir:

    for j in range(int(str[i])):

    result+="".join(temp_dir)

    temp_dir=[]

    else:

    temp_dir.append(str[i])

    i+=1

    print result

    总结

    上面三道题都是与字符串相关的题,涉及到了str的一些基本操作,如str的拆分、合并;当然还有函数定义,基本的控制语句等。总体来说考察的都是很基础的Python编程知识和编程技能。

    展开全文
  • 注:笔试题摘自牛客网,一共五道编程题。以下包括题目描述,个人思路,正确结果1.度度熊想去商场买一顶帽子,商场里有N顶帽子,有些帽子的价格可能相同。度度熊想买一顶价格第三便宜的帽子,问第三便宜的帽子价格是...

    注:笔试题摘自牛客网,一共五道编程题。以下包括题目描述,个人思路,正确结果

    1.

    度度熊想去商场买一顶帽子,商场里有N顶帽子,有些帽子的价格可能相同。度度熊想买一顶价格第三便宜的帽子,问第三便宜的帽子价格是多少?

    输入描述:

    首先输入一个正整数N(N <= 50),接下来输入N个数表示每顶帽子的价格(价格均是正整数,且小于等于1000)

    输出描述:

    如果存在第三便宜的帽子,请输出这个价格是多少,否则输出-1

    输入例子:

    10

    10 10 10 10 20 20 30 30 40 40

    输出例子:

    30

    个人思路:

    读完这道题,脑子里面大致想了一下思路,觉得还是挺简单的,用 list 和 set 以及 sorted 最后成功完成测试。

    一看到价格可能相同的字眼,set 就瞬间出现在眼前。

    正确答案(本人 && 牛客游客):

    n = int(raw_input())

    arr = [int(i) for i in raw_input().strip().split()]

    result = sorted(list(set(arr)))

    if len(result) < 3:

    print -1

    else:

    print result[2]接下来放上的这名无名游客的代码,思路和我的大致一样

    content = raw_input()

    data = raw_input()

    price = data.split(" ")

    price = list(set(price))

    price = map(eval, price)

    price = sorted(price)

    print price[2] if len(price) > 2 else -1重点是想学习人家的最后一句,大家懂得。

    2.

    一个数轴上共有N个点,第一个点的坐标是度度熊现在位置,第N-1个点是度度熊的家。现在他需要依次的从0号坐标走到N-1号坐标。 但是除了0号坐标和N-1号坐标,他可以在其余的N-2个坐标中选出一个点,并直接将这个点忽略掉,问度度熊回家至少走多少距离?

    输入描述:

    输入一个正整数N, N <= 50。

    接下来N个整数表示坐标,正数表示X轴的正方向,负数表示X轴的负方向。绝对值小于等于100

    输出描述:

    输出一个整数表示度度熊最少需要走的距离。

    输入例子:

    4

    1 4 -1 3

    输出例子:

    4

    个人思路:

    度度熊这题我是写出来了,测试也完成通过。但回头看写的代码太多了,还是没找到很简单的方法。

    反正当时想的是找出中间数,前后距离最大的那个数字,干掉之。

    正确答案(牛客网 id:C_Niels):

    while True:

    try:

    n = int(raw_input())

    coords = map(int, raw_input().split())

    sums = 0

    max_saved_len = 0

    for i in range(1, n):

    sums += abs(coords[i]-coords[i-1])

    for i in range(1, n-1):

    temp = abs(coords[i-1]-coords[i])+abs(coords[i]-coords[i+1])-abs(coords[i-1]-coords[i+1])

    if temp > max_saved_len:

    max_saved_len = temp

    print(sums-max_saved_len)

    except:

    break这个果然是用 temp 来找一个书前后相加最大的值,最后减去。人家这个好简洁!我的那个太绕了

    if arr[i] >= 0 and arr[i-1] >= 0 and arr[i+1] >= 0 or arr[i] < 0 and arr[i-1] < 0 and arr[i+1] < 0:

    d1 = abs(arr[i]) - abs(arr[i-1])

    d2 = abs(arr[i]) - abs(arr[i+1])

    dis.append(abs(d1)+abs(d2))我的冰山一角,真的不忍放出我的代码了。

    3.

    三维空间中有N个点,每个点可能是三种颜色的其中之一,三种颜色分别是红绿蓝,分别用"R", "G", "B"表示。 现在要找出三个点,并组成一个三角形,使得这个三角形的面积最大。 但是三角形必须满足:三个点的颜色要么全部相同,要么全部不同。

    输入描述:

    首先输入一个正整数N三维坐标系内的点的个数.(N <= 50)

    接下来N行,每一行输入 c x y z,c为"R", "G", "B" 的其中一个。x,y,z是该点的坐标。(坐标均是0到999之间的整数)

    输出描述:

    输出一个数表示最大的三角形面积,保留5位小数。

    输入例子:

    5

    R 0 0 0

    R 0 4 0

    R 0 0 3

    G 92 14 7

    G 12 16 8

    输出例子:

    6.00000

    个人思路:

    1.三维空间知道求三角形的面积,不知道公式或者怎么算,gg

    2.要找三点颜色相同或者不同的情况

    3.N必须大于等于3,且判断输入的情况是否能构成要求的三角形

    1.

    用两点间的距离公式算出三边长a,b,c,再用海伦公式计算.

    面积S=根号(p*(p-a)*(p-b)*(p-c)) 其中p=(a+b+c)/2.

    面积要最大,即 p 最大

    2.

    所有可能性,排列组合啊,很难啊这题

    三点,求三边,然后才求面积

    三边最大,面积最大

    最终思路:源于网上大佬提供

    先以三个点来求面积,

    然后不断加入一个点,不断更新位置

    虽然现在写完了,逻辑思路感觉也没什么问题

    但其实,还是时间复杂度的问题

    这题现在我还是想看看网上的正确答案,看他们是怎么简单的实现

    正确答案(牛客网 id:西红柿番茄炒蛋)

    import math

    def CalLen(A,B,C):

    ABvalue = (A[1] - B[1]) ** 2 + (A[2] - B[2]) ** 2 + (A[3] - B[3]) ** 2

    AB = math.sqrt(ABvalue)

    ACvalue = (A[1] - C[1]) ** 2 + (A[2] - C[2]) ** 2 + (A[3] - C[3]) ** 2

    AC = math.sqrt(ACvalue)

    BCvalue = (B[1] - C[1]) ** 2 + (B[2] - C[2]) ** 2 + (B[3] - C[3]) ** 2

    BC = math.sqrt(BCvalue)

    return (AB,AC,BC)

    if __name__ == "__main__":

    N = int(raw_input())

    data = []

    dLen = []

    max_S = 0

    for i in range(N):

    data.append([k for k in raw_input().split()])

    for j in range(1,4):

    data[i][j] = int(data[i][j])

    point = []

    for i in range(N - 2):

    for j in range(i+1,N-1):

    for k in range(1+j,N):

    A = data[i]

    B = data[j]

    C = data[k]

    point.append([A,B,C])

    for i in range(len(point)):

    AB,AC,BC = CalLen(point[i][0],point[i][1],point[i][2])

    #dLen.append([AB,AC,BC])

    if (AB+AC)>BC and (AB+BC)>AC and (AC+BC)>AB:

    if (point[i][0][0] == point[i][1][0] and point[i][1][0] == point[i][2][0]) or (point[i][0][0] != point[i][1][0] and point[i][0][0] != point[i][2][0] and point[i][1][0] != point[i][2][0]):

    dLen.append([AB,AC,BC])

    for i in range(len(dLen)):

    p = 1 / 2.0 * (dLen[i][0]+dLen[i][1]+dLen[i][2])

    S = math.sqrt(p * (p - dLen[i][0]) * (p - dLen[i][1]) * (p - dLen[i][2]))

    if max_S < S:

    max_S = S

    print "%.5f" % max_S反正就是两点之间的距离和海伦公式求面积,哈哈!个人觉得这道题考的是你的耐心,因为点可能会很多。

    当然前提你要知道如何根据点来求三角形面积。

    4.

    度度熊有一个N个数的数组,他想将数组从小到大排好序,但是萌萌的度度熊只会下面这个操作: 任取数组中的一个数然后将它放置在数组的最后一个位置。 问最少操作多少次可以使得数组从小到大有序?

    输入描述:

    首先输入一个正整数N,接下来的一行输入N个整数。(N <= 50, 每个数的绝对值小于等于1000)

    输出描述:

    输出一个整数表示最少的操作次数。

    输入例子:

    4

    19 7 8 25

    输出例子:

    2

    个人思路:

    先看当时写的想法

    找出 n-1 中最大的数,放到末尾去,count++,直到排序成功

    以这个主思路去写,结果,嗯,我个人觉得只要不考虑时间问题,是没有问题的。因为测试时,30%case,让我检查时间

    正确答案(本人 && 牛客网 id:古典文化):

    n = int(raw_input())

    arr = [int(i) for i in raw_input().strip().split()]

    sort_arr = sorted(arr)

    temp = arr[:]

    count = 0

    while arr != sort_arr:

    del temp[n-1] # 删除最后一个

    max_temp = max(temp) # 前 n-1 的最大值

    # 找出 max_temp 的位置

    for i in range(n):

    if arr[i] == max_temp:

    delete = i

    break # 找到前 n-1 的最大值的小标了

    # 在原数组中删除,并加入到尾部

    del arr[delete]

    arr.append(max_temp)

    temp = arr[:]

    count += 1

    print count因为用到了 [:],解决了很多问题,因此把我的次品也搬上了。然后看看网上的正确答案

    while True:

    try:

    num = int(raw_input())

    li = map(int, raw_input().strip().split())

    liSort = sorted(li)

    count = 0

    j = 0

    for i in range(num):

    if li[i] == liSort[j]:

    j = j + 1

    else:

    count = count + 1

    print count

    except:

    break这个用了 map,之后,大家都一样,先把排序好的弄出来,下面是进行的比较

    不过人家这里比较的是每位,而我是整个数组。这都可以吗。厉害。

    5.

    度度熊最近对全排列特别感兴趣,对于1到n的一个排列,度度熊发现可以在中间根据大小关系插入合适的大于和小于符号(即 ">" 和 "<" )使其成为一个合法的不等式数列。但是现在度度熊手中只有k个小于符号即("<"")和n-k-1个大于符号(即">"),度度熊想知道对于1至n任意的排列中有多少个排列可以使用这些符号使其为合法的不等式数列。

    输入描述:

    输入包括一行,包含两个整数n和k(k < n ≤ 1000)

    输出描述:

    输出满足条件的排列数,答案对2017取模。

    输入例子:

    5 2

    输出例子:

    66

    个人思路:

    是先找不能构成的排列组合吧,从例子来看不能构成的还是少

    2 个 < ,2 个 >

    72种排列,只有6个不能

    12345

    54321

    小大排序可能不行

    n 与 n + 1 的大小

    n > n+1 = times 大于 ">" n-k-1 不合法

    同理小于

    最后得出不合法的

    难点:在于求所有组合的数组

    然后最终还是败在了全排列这里,需要下去好好看:

    字符串的全排列和组合算法 - Hackbuteer1的专栏 - 博客频道 - CSDN.NET

    http://blog.csdn.net/hackbuteer1/article/details/7462447

    正确答案(牛客网 id:jwx 另外一个 id 和此答案相同):

    try:

    while True:

    line = raw_input()

    if line == "":

    break

    [n,k] = [int(item) for item in line.split(" ")]

    if k < 0 or k > n - 1:

    print(0)

    elif n == 1 or n == 2 or k == n - 1 or k == 0:

    print(1)

    else:

    prev = [0] * (k+1)

    prev[0] = 1

    prev[1] = 1

    curr = [0] * (k+1)

    for i in range(3,n+1):

    for j in range(k+1):

    if j == 0:

    curr[j] = 1

    elif j <= i - 2:

    curr[j] = (j+1)*prev[j] + (i-j)*prev[j-1]

    curr[j] = curr[j] % 2017

    elif j == i - 1:

    curr[j] = 1

    else:

    curr[j] = 0

    prev = curr[:]

    print(curr[k])

    except:

    pass这个厉害了,没有全排列,而且还是一口气写完了!

    先是特殊情况,然后两个 for 循环,curr 反正表示某一个 < or >,最后输出的还是 curr[k],厉害不。慢慢分析吧。

    其实,读懂别人代码的能力,也是十分重要的。

    展开全文
  • python编程规范考试

    2018-05-13 18:53:16
    python编程规范,python编码排版、函数、对象等,考验自己是否规范编程,无答案
  • 41.豆豆的爸爸和妈妈要带豆豆出国,要去...豆豆妈妈是一个比较认真的人,一定要算的很仔细,豆豆决定替妈妈用python解决这个问题,妈妈大概换多少钱合适呢?#1英镑(£)=9.0577人民币(¥)#1人民币(¥)=0.110...

    41.豆豆的爸爸和妈妈要带豆豆出国,要去英国旅游,但是需要兑换一些英国的钞票,豆豆妈妈是一个比较认真的人,一定要算的很仔细,豆豆决定替妈妈用pyth豆豆的爸爸和妈妈要带豆豆出国,要去英国旅游,但是需要兑换一些英国的钞票,豆豆妈妈是一个比较认真的人,一定要算的很仔细,豆豆决定替妈妈用python解决这个问题,妈妈大概换多少钱合适呢?

    #1英镑(£)=9.0577人民币(¥)

    #1人民币(¥)=0.1104英镑(£)

    while 1 :

    m=input("请输入要进行换算的货币钱数:")

    if m[-1] in ['¥'] :

    s=float(m[0:-1])/9.0577

    print('转换后的钱数为:%.2fs'%s)

    elif m[-1] in ['£'] :

    y=float(m[0:-1])/0.1104

    print('转换后的钱为:%.2fy'%y)

    else :

    print('输出有误,请重新输入!')

    测试数据:

    输入数值:10000¥

    转换后的钱数为:1104.03

    输入数值:15000¥

    转换后的钱数为:1656.05

    输入数值:5000£

    转换后的钱数为:45289.86

    on解决这个问题,妈妈大概换多少钱合适呢?

    #1英镑(£)=9.0577人民币(¥)

    #1人民币(¥)=0.1104英镑(£)

    while 1 :

    m=input("请输入要进行换算的货币钱数:")

    if m[-1] in ['¥'] :

    s=float(m[0:-1])/9.0577

    print('转换后的钱数为:%.2fs'%s)

    elif m[-1] in ['£'] :

    y=float(m[0:-1])/0.1104

    print('转换后的钱为:%.2fy'%y)

    else :

    print('输出有误,请重新输入!')

    展开全文
  • 少儿编程:全国青少年软件编程等级考试考试性质全国青少年软件编程等级考试标准(Python)由中国...能力目标通过本级考核的学生,能对Python编程有了基本的了解,熟悉至少一种Python编程环境的操作,会编写含有变...
  • 天津Python培训学校怎么选Python近几年非常火热的编程语言,在网络爬虫、机器学习、人工智能、数据分析等领域得到广泛应用,现在国家计算机二级考试也有了Python的身影,但高校并没有相关课程,所以大部分人都会选择...
  • python二级考试操作题6 精品文档 精品文档 收集于网络如有侵权请联系管理员删除 收集于网络如有侵权请联系管理员删除 精品文档 收集于网络如有侵权请联系管理员删除 1.基本操作题1 描述 参照代码模板完善代码实现...
  • python软件工程师月薪多少? python工程师工资待遇怎么样?职友集统计得出,python工程师平均...1.第01讲考试介绍和程序设计基本方法 2.第02讲基本语法元素 3.第03讲函数input和eval和print 4.第04讲实例解析和作业 ...
  • 2016年6月,教育部印发《教育信息化"十三五”规划》通知,把信息化教学能力纳入学校...随着STEAM教育被写进政策、大综合考试开始试点编程,被称作"第三门语言”的编程,已然成为趋势。其中作为少儿编程...
  • Python期末考试编程

    千次阅读 2021-01-11 14:37:02
    示例 1 输入 i love python(第1行输入为 s1字符串) io(第2行输入为 s2字符串) 输出 lve pythn(输出删除后的 s1字符串) 示例 2 输入 i love python this 输出 love pyon # 处理输入 s1 = input() s2 = input()...
  • python 青少儿编程

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 786
精华内容 314
关键字:

python编程考试

python 订阅