python练习题

作业1:
输入数,判断这个数是否是质数(要求使用函数 + for循环)

def num_prime(num):
    if num < 1:
        print(f'请输入大于1的数')
    elif num == 2 or num == 3:
        print(f'{num}为质数')
    else:
        for i in range (2,num):
            if num % i == 0:
                print(f'{num}不是质数')
                return 0
        print(f'{num}是质数')

while True:
    num = int(input('请输入一个数字(输入0结束):'))
    if num == 0:
        break
    else:
        num_prime(num)

作业2:求50~150之间的质数是那些?

def num_prime(num1,num2):
    for i in range (num1,num2+1):
        Flag = True
        for k in range (2,i):
            if i % k == 0:  #判断是不是质数,成立则不是质数
                Flag = False
                break
        if Flag == True:
            print(i)
num_prime(50,150)

作业3:打印输出标准水仙花数,输出这些水仙花数

def water_flower():
    for i in range (100,1000):
        a = i // 100
        b = i // 10 % 10
        c = i % 10
        count = (a**3 + b**3 + c**3)
        if count == i:
            print(f'{i}是水仙花数')
water_flower()

作业4:验证:任意一个大于9的整数减去它的各位数字之和所得的差,一定能被9整除.

def except_num(num):
    num1 = num
    num1 = list(num)  #将其转化为列表
    for i in num1:    #通过for循环得到各个位数得值
        i = int(i)
        num = int(num) - i   #减去各个值
    if num % 9 == 0:
        print(f'{num}可以被整数,该结论可以被验证')
while True:
    num = input('请输入一个数,来验证结论(输入\'n\'或\'N\'结束):')
    if num == 'n' or num == 'N':
        break
    else:
        except_num(num)

作业5:一个五位数,若在它的后面写上一个7,得到一个六位数A,若在它前面写上一个7,得到一个六位数B,B是A的五倍,求此五位数.

def find_five_num():
    for num in range (10000,100000):
        A = num + 700000
        B = num * 10 + 7
        if A / B == 5:
            print(f'{num}这个数就是我们要找得数。')
find_five_num()

作业6:有一种最简真分数,它们的分子与分母的乘积都是140,把所有这样的真分数从小到大打印出来

    def fraction():
        for i in range (1,10):
            for j in range (i+1,141):
                if i*j == 140:
                    print('{}/{}'.format(i,j))
    fraction()

作业7:某数被80除所得的商,不但是7的倍数,而且用2,3,4,5,6去除余数都是1,求这 个自然数.

def nature_num():
    for i in range(1,100000):
        num = i / 80
        if num % 7 == 0 and num % 2 == 1 and num % 3 == 1 and num % 4 == 1 and num % 5 == 1 and num % 6 == 1:
            print(f'{i}是我们要找1000以内的自然数')
nature_num()

作业8:编程求出满足以下条件的三位数:它除以11所得的商等于它各位数字之和

def three_num():
    a = num % 10
    b = num // 10 % 10
    c = num // 100
    count = a+b+c
    if num / 11 == count:
        print(f'这个数为{num}')
for num in range (100,1001):
    three_num()

作业9:有一堆硬币,每次只能拿一个或者两个,求最少多少次可以拿完硬币[10, 8, 5, 3, 27, 99]

#有一堆硬币,每次只能拿一个或者两个,求最少多少次可以拿完硬币[10, 8, 5, 3, 27, 99]
def coin_num(a):
    count = 0
    for i in a:
        if i % 2 == 0:
            b = i // 2
        else:
            b = i // 2 + 1
        count += b
    print(count)
a = [10, 8, 5, 3, 27, 99]
coin_num(a)

作业10:求1~100之间不能被3整除的数之和

count = 0
def three():
    if num % 3 != 0:
        global count
        count += num
for num in range (1,101):
    three()
print(count)

作业11:给定一个正整数N,找出1到N(含)之间所有质数的总和

#给定一个正整数N,找出1到N(含)之间所有质数的总和
def prime_num(num):
    index = 2
    for k in range (2,num+1):
        for i in range (2,k):
            if k % i == 0:
                break
            index += k
            break
    print(index)
            #print(index)

num = int(input('请输入一个正整数:'))
if num < 1:
    print('输入错误!!!')
else:
    prime_num(num)

作业12:计算PI(公式如下:PI=4(1-1/3+1/5-1/7+1/9-1…)

def cul() :
    ans = 0;add = 1
    sign = 1
    while(1/add>10**(-6)) :
        ans = ans + sign/add
        add = add + 2
        sign = -sign
    else :
        ans += sign/add
    print("pi = {}".format(ans * 4))
    print("pi = %.8f"%(ans * 4))
 
cul()

作业13:给定一个10个元素的列表,请完成排序(注意,不要使用系统api)

def a(num):
    index = 0
    count = 0
    for i in range(num):
        index += num * 10 ** i
        print(index)
        count += index
    print(count)
num = int(input('请输入一个数字:'))
print(a(num))

作业14:合并两个有序数组,合并后还是有序列表

def loop_merge_sort(l1,l2):
    tmp = []   #构造一个的新的列表
    while len(l1)>0 and len(l2)>0:
        if l1[0] <l2[0]:        #循环每次比较第一个元素
            tmp.append(l1[0])   #tmp添加元素
            del l1[0]           #l1删除一个,原有的元素自动向前移动一位
        else:
            tmp.append(l2[0])
            del l2[0]
    while len(l1)>0:
        tmp.append(l1[0])
        del l1[0]
    while len(l2)>0:
        tmp.append(l2[0])
        del l2[0]
    return tmp

if __name__ == '__main__':
    L1=[23,45,67,77,78,80,90]
    L2=[4,11,26,33,42,61,80]
    new_list=loop_merge_sort(L1,L2)
    print(new_list)

作业15:给定一个非负整数数组A,将该数组中的所有偶数都放在奇数元素之前

#给定一个非负整数数组A,将该数组中的所有偶数都放在奇数元素之前
def sort_list(a):
    start, end = 0, len(a) - 1
    while start < end:
        if a[start] % 2 == 0:
            start += 1
        elif a[end] % 2 == 1:
            end -= 1
        else:
            a[start], a[end] = a[end], a[start]
    print(a)
a = [1,2,3,4,5,6]
sort_list(a)

作业16:将10进制数据转换为二进制,并且统计其中的0和1的数量

#将10进制数据转换为二进制,并且统计其中的0和1的数量
def bin_num():
    one_count = 0
    zero_count = 0
    index_bin = bin(index_num)
    for i in index_bin[2:]:
        print(i)
        if i == '0' :
            zero_count += 1
        elif i == '1':
            one_count += 1
    print(f'{index_num}的二进制数为{index_bin},它有{one_count}个1,有{zero_count}个0')

index_num = int(input('请输入一个十进制的数:'))	
bin_num()

作业17:给定一个数组,已知数组中的元素都是成对出现,
现在数组中只有一个元素没有成对,请找出这个元素。
[1,3,1,2,2,8,8]

def dup(ls):
    temp = 0
    for i in ls:
        temp ^= i
    return temp
ls = [1,3,1,2,2,8,8]
print(dup(ls))
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值