习题1

作者: 小董不太懂 | 来源:发表于2019-08-04 17:46 被阅读0次
    • 有1,2,3,4四个数字,能够组成多少个无重复的三位数,它们分别是多少?

    '''
    有1,2,3,4四个数字,能够组成多少个无重复的三位数,它们分别是多少?
    '''
    list = []
    for i in range(1,5):
        for j in range(1,5):
            for k in range(1,5):
                if(i!=j) and (j!=k) and (k!=i):
                    m = [i,j,k]
                    list.append(m)
                    print(m)
    print('共有{}位'.format(len(list)))
    

    总结:

    这个题目主要是枚举法

    一. 枚举算法的思想:
    1. 枚举算法的定义:
      在进行归纳推理时,如果逐个考察了某类事件的所有可能情况,因而得出一般结论,那么该结论是可靠的,这种归纳方法叫做枚举法。
    2. 枚举算法的思想是:
      将问题的所有可能的答案一一列举,然后根据条件判断此答案是否合适,保留合适的,舍弃不合适的。
    3. 使用枚举算法解题的基本思路如下:
      (1)确定枚举对象、范围和判定条件。
      (2)逐一枚举可能的解并验证每个解是否是问题的解。
    4. 枚举算法步骤:
      (1)确定解题的可能范围,不能遗漏任何一个真正解,同时避免重复。
      (2)判定是否是真正解的方法。
      (3)为了提高解决问题的效率,使可能解的范围将至最小,
    5. 枚举算法的流程图如下所示:


    拓展练习

    
    #枚举法拓展
    '''公鸡每只5元,母鸡每只3元,三只小鸡1元,用100元买100只鸡,问公鸡、母鸡、小鸡各多少只?'''
    for gj in range(1,21):
        for mj in range(1,34):
            xj = 100 - mj - gj
            if gj*5 + mj*3 + xj/3*1 == 100:
                print('公鸡{}只,母鸡{}只,小鸡{}只'.format(gj,mj,xj))
    
    #枚举法拓展
    '''题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身
       分析:ABC = A**3 + B**3 + C**3
    '''
    for a in range(1,10):
        for b in range(10):
            for c in range(10):
                if a**3 + b**3 + c**3 == a*100 + b*10 + c:
                    print(a,b,c)
    
    
    #枚举法拓展
    '''
    问题描述:在下面的算式中,添加“+”、“-”,“*”,“/”,4个运算符,使得这个式子成立。
        5  5  5  5  5 = 5
    算法分析:
    上述式子左侧有5个数字,一共需要4个运算符。根据题目要求,两个数字之间的运算符只能有4中选择。在
    具体编程时,可以通过循环来填入各种运算符,然后再判断算式左侧的值是否等于右侧的值。并保证,当填入的
    是除号时,则右侧的数不能为0,并且乘除的优先级高于加减的优先级。
    '''
    #
    list = ['+','-','*','/']
    for a in list:
        for b in list:
            for c in list:
                for d in list:
                    #上面都是遍历list列表
                    #下面是先利用format函数构成四则运算的字符串形式,然后用eval函数将str型的四则运算
                    #转化成float类型,然后判断筛选选出运算结果小于等于5的那些四则运算
                    #再将这些float的四则运算转化为整型,并判断结果是否为5,然后再输出
                    sum_base = eval('5{}5{}5{}5{}5'.format(a, b, c, d))
                    if sum_base <= float(5):
                        sum = int(sum_base)
                        if sum == 5:
                            print('5{}5{}5{}5{}5 = 5'.format(a, b, c, d))
    
    

    下面是运算结果,不过这题我拿不准,网上也没有资料,若朋友有更好的方法,欢迎留言交流,感谢

    
    D:\anaconda\python.exe D:/bilibili大学/python经典习题100道/习题1.py
    5+5+5-5-5 = 5
    5+5-5+5-5 = 5
    5+5-5-5+5 = 5
    5+5-5*5/5 = 5
    5+5-5/5*5 = 5
    5+5*5-5*5 = 5
    5+5*5/5-5 = 5
    5+5/5-5/5 = 5
    5+5/5*5-5 = 5
    5-5+5+5-5 = 5
    5-5+5-5+5 = 5
    5-5+5*5/5 = 5
    5-5+5/5*5 = 5
    5-5-5+5+5 = 5
    5-5*5+5*5 = 5
    5-5*5/5+5 = 5
    5-5/5+5/5 = 5
    5-5/5*5+5 = 5
    5*5+5-5*5 = 5
    5*5-5*5+5 = 5
    5*5*5/5/5 = 5
    5*5/5+5-5 = 5
    5*5/5-5+5 = 5
    5*5/5*5/5 = 5
    5*5/5/5*5 = 5
    5/5+5-5/5 = 5
    5/5-5/5+5 = 5
    5/5*5+5-5 = 5
    5/5*5-5+5 = 5
    5/5*5*5/5 = 5
    5/5*5/5*5 = 5
    5/5/5*5*5 = 5
    
    Process finished with exit code 0
    
    

    相关文章

      网友评论

          本文标题:习题1

          本文链接:https://www.haomeiwen.com/subject/naajdctx.html