python期末考试编程题练习

  • 定义一个函数,判断一个数是否为奇数,并求1-100范围内奇数的和、积。
def f(n):
    if n%2!=0:
        return True
    else:
        return False
sum=0
mul=1
for i in range(1,100):
    if f(i):
        sum+=i
        mul*=i
print(sum,mul)
  • 若一个三位数每一位数字的3次幂之和都等于它本身,则这个三位数是水仙花数。例如153是水仙花数,各位数字的立方和为13 + 53+ 33 = 153。编程求解所有的水仙花数。
def f(x):#判断水仙花
    a=str(x)
    sum=eval(a[0])**3+eval(a[1])**3+eval(a[2])**3
    if x==sum:
        return True
    else:
        return False
for i in range(100,1000):
    if f(i):
        print(i)

  • 中国古代数学家张丘建在他的《算经》中提出了一个著名的“百钱百鸡问题”:一只公鸡值五钱,一只母鸡值三钱,三只小鸡值一钱,现在要用百钱买百鸡,请问公鸡、母鸡、小鸡各多少只?编程解决以上问题。
for i in range(21):
    for j in range(34):
        for k in range(301):
            if 5*i+3*j+k/3==100 and i+j+k==100:
                print(i,j,k)

  • 只能由1和它本身整除的整数被称为素数;若一个素数从左向右读与从右向左读是是相同的数,则该素数为回文素数。编程求解2~1000内的所有回文素数。
def sushu(n):
    if n>1:
        for i in range(2,n):
            if n%i!=0:
                return True
            else:
                return False

def huiwen(number):
    length = len(str(number))#转换为字符串的长度
    list = [int(x) for x in str(number)]

    for j in range(length // 2):
        if list[j] != list[length - 1 - j]:
            return False
    return True

for j in range(2,1000):
    if sushu(j) and huiwen(j):
        print(j)
  • 已知有如下一张表格:

python期末考试编程题练习_第1张图片

仿照以上表格结构,创建一个DataFrame对象,字典对象,Jason对象,并将其分别保存至文件。

import pandas as pd
import numpy as np
arr=np.array([[1,5,8,8],[2,2,4,9],[7,4,2,3],[3,0,5,2]])
n_arr=pd.DataFrame(arr,columns=['A','B','C','D'])
print(n_arr)

python期末考试编程题练习_第2张图片 python期末考试编程题练习_第3张图片 

  • 若一个数刚好等于它的因子之和,那么这个数就称为“完数”,例如6=1+2+3,6就是完数。编程打印1000以内的所有完数。
def f(x):#判断一个数是否是完数
    sum=0
    for i in range(1,x):
        if x%i==0:
            sum+=i
    if sum==x:
        return True
for j in range(1,1000):
    if f(j):
        print(j)
  • 输入三个整数,把这三个数由小到大输出。
a=list(input())
a.sort()
for i in a:
    if i!=' ':
        print(i,end=' ')
  • 随机产生[1,100]间的数,将这些数输出;计算这些数中能被2整除但不能被4整除的数的和,并输出结果。
import random as r
n=int(input('随机数个数:'))
b=[]
for i in range(n):
    a=r.randint(1,101)
    print(a,end=' ')
    if a%2==0 and a%4!=0:
        b.append(a)
print('\n')
sum1=0
for j in b:
    sum1+=j
print(sum1)
  • 输入n的值,计算1+(1+2)+(1+2+3)+…+(1+2+3+…+n) 的和, 将结果在输出显示。
def f(n):#求1+……+n的和
    sum=0
    for i in range(1,n+1):
        sum+=i
    return sum

n=eval(input())
allsum=0
for j in range(1,n+1):
    allsum+=f(j)
print(allsum)

你可能感兴趣的:(python,python)