Python水仙花数,鸡兔同笼问题,百钱买百鸡问题,斐波那契数列,模拟发微信红包

一、题目:

1、求50以内能被7整除,但不能同时被5整除的所有整数。

2、如果一个3位数的各位数字的立方和等于该数自身,则该数称为“水仙花数”。 例如,153 = 13 + 53 + 33,所以153是一个水仙花数。

    求100~1000以内所有“水仙花数”。

3、设有一份某地连续10年内6月1日的气温记录,其数据为(0C):31、30、33、31、28、32、29、33、35、31,

    试计算其平均气温。

4、 鸡兔同笼问题。鸡和兔在一个笼子里,从上面数,有35个头; 从下面数,有94只脚。

    问笼中鸡和兔各有多少只?

5、百钱买百鸡问题。公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买100只鸡,

    如何买?

6、

7、计算n!函数

8、从键盘输入参数n,计算斐波那契数列中第一个大于n的项。

    斐波那契数列为:1,1,2,3,5,8,13,......。即从第3项开始,每一项是前二项之和。

9、模拟发微信红包

 

二、代码展示:

# -*- coding: utf-8 -*-
'''
 @Author  : Jackma
 @Time    : 2020/10/30 18:03
 @File    : 2020_10_30.py
 @Software: PyCharm
 @URL     : www.jackrma.com
 @Copyright:博客所有权归本人和CSDN所有,如有转载请在显著位置给出博文
            链接和作者姓名,否则本人将付诸法律。
 @Version : 
'''

# 1
def func():
    '''
    求50以内能被7整除,但不能同时被5整除的所有整数。
    :return:
    '''
    for i in range(1, 101):
        if i%7 == 0 and i%5 != 0:
           print(i)

func()


# 2
def ex2_23():
    '''
    如果一个3位数的各位数字的立方和等于该数自身,则该数称为“水仙花数”。
    例如,153 = 13 + 53 + 33,所以153是一个水仙花数。
    求100~1000以内所有“水仙花数”。
    :return:
    '''
    for i in range(100,1000):
        sum=0
        temp=i
        while temp:
            sum=sum+(temp%10)*(temp%10)*(temp%10) #各个数位的立方累加
            temp = int(temp/10)
        if sum==i:
            print(i)

ex2_23()


# 3
def ex2_24():
    '''
    设有一份某地连续10年内6月1日的气温记录,其数据为(0C):
    31、30、33、31、28、32、29、33、35、31,
    试计算其平均气温。
    :return:
    '''
    # a = eval(input("求平均,请输入自然数列表:"))  # 输入自然数的列表
    a = {31,30,33,31,28,32,29,33,35,31}
    v = 0
    for i in a:
        v += i
    print( int(v/len(a)))

ex2_24()


# 4
def ex2_25():
    '''
    鸡兔同笼问题。鸡和兔在一个笼子里,从上面数,有35个头;
    从下面数,有94只脚。
    问笼中鸡和兔各有多少只?
    :return:
    '''
    for x in range(1, 23):
        y = 35 - x
        if 4 * x + 2 * y == 94:
            print('兔子有%s只,鸡有%s只' % (x, y))

ex2_25()


# 5
def ex2_26():
    '''
    百钱买百鸡问题。
    公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买100只鸡,
    如何买?
    :return:
    '''
    for x in range(1, 20):  # 从1开始买公鸡,不包括20
        for y in range(1, 33):  # 从1开始买母鸡,不包括33
            z = 100 - x - y  # 计算剩余要买多少个小鸡,小鸡的个数要满足3的倍数
            if (z % 3 == 0) and (5 * x + 3 * y + z / 3 == 100):  # 判断买的计划是否符合条件
                print('公鸡:%s 母鸡:%s 小鸡:%s' % (x, y, z))

ex2_26()


# 6
def ex2_27():
    '''

    :return:
    '''
    i = 1
    x = 1
    while i <= 9:
        x = (x + 1) * 2
        i = i + 1
    print('西瓜总数:x=', x)

ex2_27()


# 7
def fun_28(n):
    '''
    编写计算n!的函数。
    :return:
    '''
    if n == 1:
        return 1
    else:
        return n * fun_28(n - 1)

x = eval(input('请输入n的值:'))
y = fun_28(x)
print(x, '! = ', y)


#  8
def fun_29(n):
    '''
    从键盘输入参数n,计算斐波那契数列中第一个大于n的项。
    斐波那契数列为:1,1,2,3,5,8,13,......。
    即从第3项开始,每一项是前二项之和。
    :return:
    '''
    a,b = 1,1
    while b<n:
        a,b = b, a+b
    else:
        return b

x = eval(input('请输入n的值:'))
y = fun_29(x)
print('第一个大于', x, '的项 = ',y)


# 9
import random

def hongbao(total, num):
    '''
    模拟发微信红包
    :return:
    '''
    each=[]
    already = 0
    for i in range(1, num):
        t = random.randint(1, (total - already) - (num - i))
        each.append(t)
        already = already + t
    each.append(total - already)
    return each

if __name__ == '__main__':
    total = 50
    num = 5
    for i in range(10):
        each = hongbao(total, num)
        print(each)

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值