Python——四

1、将上节课的作业,统统使用函数封装一次

def hs(height,weight):
    BMI = weight/height**2
    if BMI < 18.5:
        return("过轻")
    elif   18.5 < BMI <24:
        return("正常")
    elif  24 < BMI < 27:
        return("过重")
    elif 27 < BMI <30:
        return("轻度肥胖")
    elif 30 < BMI <35:
        return("中度肥胖")
    elif 35 >= BMI :
        return("重度肥胖")


height = float(input("请输入身高(m):"))
weight = float(input("请输入体重(kg)"))

print(hs(height,weight))

def hs(s):
    i = 1
    while i <= s:
        j = 1
        while j <= i:
            print ("*",end ="")
            j += 1
        print("")
        i += 1


s=int(input("请输入一个数:"))
hs(s)

 


  2、  输入数,判断这个数是否是质数(要求使用函数 + for循环)

def hs(a):
    for i in range(2,a//2+1):
        if a%i==0:
            return False
    return True


a=int(input("请输入一个数:"))

if hs(a)==True:
    print(f"{a}是质数")
else:
    print(f"{a}是合数")


    
3、求50~150之间的质数是那些?

for i in range(50,151):

    flag = True

    for o in range(2,i//2):
        if i % o == 0:
            flag = False
            break

    if flag:
        print(f"{i}是质数")

4、打印输出标准水仙花数,输出这些水仙花数

for i in range (100,1000):
    hundred = i//100
    ten = i % 100 // 10
    bit = i % 10
    if hundred ** 3 + ten ** 3 + bit ** 3 == i:
        print(i)

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

def check(num):
    count = 0
    start_num = num
    while num != 0:
        count += num % 10
        num //= 10

    if (start_num - count) % 9 == 0:
        return True
    return False


num = int(input("请输入一个大于9的整数:"))
while num < 10:
    num = int(input("对不起,输入的数必须大于9:"))

if check(num):
    print("符合规律")
else:
    print("不符合规律")

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

from re import I


def hs():
    for i in range(10000,100000):
        A=i*10+7
        B=i+700000

        if B == A * 5:
            return i


print(hs())


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

for a in range (1,12):
    for b in range (2,141):
        if a<b and a*b == 140:
            print(f"{a}/{b}")
            

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

def hs():
    i=560
    while True:
        shang = i / 80
        if shang % 7 == 0 and shang % 2 == 1 and shang % 3 ==1 and shang % 4 == 1 and shang % 5 == 1 and shang % 5 ==1:
            return i
        i = i+1


print(hs())

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

for i in range (100,1000):
    shang = i/11
    hundred = i // 100
    ten = i % 100 // 10
    bit = i % 10
    if shang == hundred + ten +bit:
        print(i)


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

def hs (a):
    count = 0
    for i in a:
        if i & 1 == 0:
            count = i // 2 +count
        else :
            count = i // 2 + 1 +count
    return count


a=[10,8,5,3,27,99]
count = hs(a)
print(f"最少需要{count}次才可以拿完硬币")

 11、求1~100之间不能被3整除的数之和

def hs():
    count = 0
    for i in range (1,101):
        if i % 3 != 0:
            count = count + i
    return count


count = hs()
print(f"1~100之间不能被3整除之和为{count}")

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

N = int (input("请输入一个正整数:"))
count = 0 
for i in range (1,N+1):

    flag = True

    for o in range (2,i//2+1):
        if i % o == 0:
            flag = False
            break

    if flag:
        count = count + i
print(count)


13、计算PI(公式如下:PI=4(1-1/3+1/5-1/7+1/9-1.......)

import sys 
n = int (input("请输入一个正整数:"))
if n <= 0:
    print("您输入的不是正整数,程序退出")
    sys.exit()


s=0
a=0
for i in range (1,n+1,2):
    s=s+1/i*(-1)**a
    a +=1
print("pi的近似值是:",s*4)

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

wp = [1,3,5,2,4,6]
for i in range (len(wp)-1):
    for j in range (len (wp)-1-i):
        if wp[j]>wp[j+1]:
            wp[j],wp[j+1]=wp[j+1],wp[j]
print(wp)

15、求  a+aa+aaa+.......+aaaaaaaaa=?其中a为1至9之中的一个数,项数也要可以指定。

a=0
while a<=0 or a>=10:
    a=int(input("Enter a[1,9]"))
n=0
while n<=0:
    n = int(input("ENTER n :"))
s=0
m=0
for i in range(n):
    m= m*10+a
    s +=m
    if i<n-1:
        print(m,end="+")
    else :
        print(m,end="-")
print(s)

16、合并两个有序数组,合并后还是有序列表

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)

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

def get_num(ls):
    for i in ls:
        for j in ls:
            if j != i:
                print(f"没有成对的元素为:{j}")
                return j


if __name__=='__main__':
    ls = [1,3,1,2,8,8]
    get_num(ls)

18、将10进制数据转换为二进制,并且统计其中的0和1的数量

def oneCount1(n):
    print(bin(n))
    if n<0:
        n = n& 0xffffffff
        print(n)
    print(bin(n))
    
    bin2=str(bin(n))[2:]
    print(bin2)
    count = 0
    for i in str(bin2):
        if i == '1':
            count +=1
    return count

print(oneCount1(12))
print(oneCount1(-12))

 
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值