美文网首页python 100-day
Day3-5 分支结构、循环结构和构造程序

Day3-5 分支结构、循环结构和构造程序

作者: FengSL | 来源:发表于2023-06-04 21:15 被阅读0次

    1、分支结构

    其他程序语言,一般需要用花括号{}来构造分支结构,但python主要靠缩进,相同缩进的程序为同一个代码块。这个特性,使python具有非常好的可读性。
    一般建议代码块的缩进4个空格,不要使用tab键。条件分支常用if ... esif...else。另外,需要注意python没有unless,也不用!取“否”逻辑。可以用if not代替。

    2、循环结构

    python中的循环结构主要有for .. in ..和while两个。其中,while可通过构建死循环、达到条件退出循环,来构建程序。循环结构中,continue代替了perl里的next,break跳出当前循环。具体用法可见下面的示例。

    3、构造程序

    当学习完元素、条件结构、循环结构以后,就可以写出一些可用的程序了。下面我们使用python程序,解决一些经典问题。

    1、寻找水仙花数

    说明:水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯特朗数,它是一个3位数,该数字每个位上数字的立方之和正好等于它本身,例如:1^3 + 5^3+ 3^3=153

    import re
    j = 1
    for i in range(100,1000):
        i_search = re.search(r"(\d)(\d)(\d)",str(i)) #将int型转换为string,进行正则表达式匹配
        ba = i_search.group(1)
        sh = i_search.group(2)
        ge = i_search.group(3)
        mi = int(ba)**3 + int(sh)**3 + int(ge)**3 #将string型转换为int型,进行幂运算
        
        if mi == i:
            print("第",j,"个水仙花数是:",i)
            j += 1
    #Print
    #第 1 个水仙花数是: 153
    #第 2 个水仙花数是: 370
    #第 3 个水仙花数是: 371
    #第 4 个水仙花数是: 407
    
    

    这里我用了正则表达式确定百位、十位和个位的数字,原作者使用的是整除和模运算,三位数对100整除//,得到百位数,三位数对10取模的个位数%,先对10整除,再对10取模得十位数 num // 10 % 10。

    2、百钱百鸡问题

    说明:百钱百鸡是我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?翻译成现代文是:公鸡5元一只,母鸡3元一只,小鸡1元三只,用100块钱买一百只鸡,问公鸡、母鸡、小鸡各有多少只?

    #百钱百鸡问题
    
    for i in range(0,21):
        for j in range(0,34):
            for f in range(0,101):
                if i + j +f == 100 and 5*i +3*j +1/3*f == 100:
                    print("分别可以买到公鸡、母鸡、小鸡:",i,"、",j,"、",f,"只")
    #Result
    #分别可以买到公鸡、母鸡、小鸡: 0 、 25 、 75 只
    #分别可以买到公鸡、母鸡、小鸡: 4 、 18 、 78 只
    #分别可以买到公鸡、母鸡、小鸡: 8 、 11 、 81 只
    #分别可以买到公鸡、母鸡、小鸡: 12 、 4 、 84 只
    
    

    3、CRAPS赌博游戏

    说明:CRAPS又称花旗骰,是美国拉斯维加斯非常受欢迎的一种的桌上赌博游戏。该游戏使用两粒骰子,玩家通过摇两粒骰子获得点数进行游戏。简单的规则是:玩家第一次摇骰子如果摇出了7点或11点,玩家胜;玩家第一次如果摇出2点、3点或12点,庄家胜;其他点数玩家继续摇骰子,如果玩家摇出了7点,庄家胜;如果玩家摇出了第一次摇的点数,玩家胜;其他点数,玩家继续要骰子,直到分出胜负。

    
    #CRAPS赌博游戏
    import random
    print("来玩CRAPS赌博游戏吧")
    
    input("游戏开始,你是玩家,请你开始掷骰子:")
    
    tou1 = random.randint(1,6)
    tou2 = random.randint(1,6)
    First_dian = tou1 + tou2
    
    print("你分别掷出了",tou1,"和",tou2,"点")
    
    print("第一次掷出的点数为:",tou1+tou2,"点")
    
    if tou1 + tou2 == 7 or tou1 + tou2 == 11:
        print("恭喜你,你掷出了",tou1+tou2,"点,你获得了胜利")
    elif tou1+tou2 == 2 or tou1+tou2 == 3 or tou1+tou2 ==12:
        print("很遗憾,你掷出了",tou1+tou2,"点,庄家获得了胜利")
    else:
        while True:
            print("掷出的点数为",tou1+tou2,",没人获得胜利")
            input("继续掷骰子吧:")
            tou1 = random.randint(1,6)
            tou2 = random.randint(1,6)
            print("你分别掷出了",tou1,"和",tou2,"点")
            if tou1+tou2 == 7:
                print("很遗憾,你掷出了",tou1+tou2,"点,庄家获得了胜利")
                break
            elif tou1+tou2 == First_dian:
                print("恭喜你,你掷出了",tou1+tou2,"点,和第一次的点数相同,你获得了胜利")
                break
    

    4、生成斐波那契数列的前20项

    斐波那契数列的特点是数列的前两个数都是1,从第三个数开始,每个数都是它前面两个数的和

    #生成斐波那契数列
    i = 1
    a = 1
    b = 1
    
    Fib = [a,b]
    
    while i <= 20 :
        c = a + b
        a = b
        b = c
        i +=1
        Fib = Fib + [c]
    print("斐波那契数列的前20项为:",Fib)
    
    #斐波那契数列的前20项为: [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711]
    
    

    5、找出10000内的完美数

    说明:完美数又称为完全数或完备数,它的所有的真因子(即除了自身以外的因子)的和(即因子函数)恰好等于它本身。例如:6(6=1+2+3)和28(28=1+2+4+7+14)就是完美数。完美数有很多神奇的特性,有兴趣的可以自行了解。

    #寻找10000以内的完美数
    
    wanm = []
    
    for i in range(2,10001):
        yin = []
        for j in range(1,i):
            if(i % j ==0):
                yin = yin + [j]
        if sum(yin) == i:
            wanm = wanm + [i]
    
    print("10000以内的完美数有:",wanm)
    #10000以内的完美数有: [6, 28, 496, 8128]
    

    6、输出100内的所有素数

    说明:素数指的是只能被1和自身整除的正整数(不包括1)。

    #输出100内的所有素数
    
    su = []
    
    for i in range(2,100):
        count = 0
        for j in range(1,i):
            if i % j == 0:
                continue
            else:
                count = count + 1
    
        if count + 2 == i:
            su = su + [i]
    
    print("100内的素数有:",su)
    #100内的素数有: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
    

    相关文章

      网友评论

        本文标题:Day3-5 分支结构、循环结构和构造程序

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