偷学Python第六天:构造程序逻辑

人生苦短我用Python

偷学Python第六天:构造程序逻辑

古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。——苏轼

经典的案例

  1. 寻找水仙花数

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

    for num in range(100,1000):
         unit = num % 10  # 通过将数字进行取余运算,得到个位数
         ten = num // 10 % 10 # 先将数字取整得到一个两个数,然后在取余得到十位数
         hundred = num // 100 #取整得到百位数
         if (unit ** 3 + ten ** 3 + hundred ** 3) == num:
              print(num)
    

    也可以通过类似的方法将一个数字的顺序给倒过来

    num = unit *100 + ten *10 + hundred 
    
  2. 百钱百鸡问题。

    说明:公鸡5元一只,母鸡3元一只,小鸡1元三只,用100块钱买一百只鸡,问公鸡、母鸡、小鸡各有多少只?

    cock = 5
    hen = 3
    chick = 1/3
    
    for i in range(101):
         for j in range(101):
              x = 100 -i -j
              if (cock *i + hen *j + chick *x) == 100:
                   print('公鸡: %d只, 母鸡: %d只, 小鸡: %d只' % (i, j, x))
    

    上面使用的方法叫做穷举法,也称为暴力搜索法,这种方法通过一项一项的列举备选解决方案中所有可能的候选项并检查每个候选项是否符合问题的描述,最终得到问题的解。这种方法看起来比较笨拙,但对于运算能力非常强大的计算机来说,通常都是一个可行的甚至是不错的选择,而且问题的解如果存在,这种方法一定能够找到它。

  3. CRAPS赌博游戏

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

    from random import randint  # 导入random模块的randint
    money = 1000 # 初始有1000块大洋
    count = 1 # 记录回合
    while money > 0:
         needs_go_on = False # 如果不开始初始为false,第1回合有结果的话,后面就会出错
         print("你的资产为:%d元" % money)
         while True:
              debt = int(input('请下注: '))
              if 0 < debt <= money: # 如果钱不够下注则跳出循环
                break
         frist = randint(1,6) + randint(1,6) # 筛子的数字
         if frist == 7 or frist == 11:
              print("玩家胜利")
              money += debt
              print("恭喜你在第 %d 回合胜利" % count)
              print("第 %d 回合的点数为: %d" %(count , frist))
         elif frist == 2 or frist == 3 or frist == 12:
              print("庄家胜利")
              money -= debt
              print("很遗憾你在第 %d 回合失败" % count)
              print("第 %d 回合的点数为: %d" %(count , frist))
         else:
              needs_go_on = True
    
         while needs_go_on:
              current = randint(1,6) + randint(1,6)
              if current == frist:
                   count +=1
                   print("玩家胜利")
                   money += debt
                   needs_go_on = False
                   print("恭喜你在第 %d 回合胜利" % count)
                   print("第 %d 回合的点数为: %d" %(count , current))
    
              if current == 7:
                   count +=1
                   print("庄家胜利")
                   money -= debt
                   needs_go_on = False
                   print("很遗憾你在第 %d 回合失败" % count)
                   print("第 %d 回合的点数为: %d" %(count , current))
    print('你破产了, 游戏结束!')
    
  4. 生成斐波那契数列的前20个数。

    说明:斐波那契数列(Fibonacci sequence),又称黄金分割数列,是意大利数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)在《计算之书》中提出一个在理想假设条件下兔子成长率的问题而引入的数列,所以这个数列也被戏称为"兔子数列"。斐波那契数列的特点是数列的前两个数都是1,从第三个数开始,每个数都是它前面两个数的和,形如:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …。斐波那契数列在现代物理、准晶体结构、化学等领域都有直接的应用。

    a = 0
    b = 1
    for _ in range(20): # 循环20次
        a, b = b, a + b # 同时进行赋值
        print(a, end=' ')
    

今日学习总结

一些实用的案例练习

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一碗周.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值