三、程序逻辑总体练习--顺序结构、循环结构、分支结构
练习题:
练习题1:寻找“水仙花数”。
练习题2:寻找“完美数”。
练习题3:“百钱百鸡”问题。
练习题4:生成“斐波拉切数列”。
练习题5:Craps赌博游戏。
练习题6:猜数字
练习题7:判断输入的正整数是不是回文数
练习8:输出2-99之间的素数
练习9:输出99乘法表
答案:
练习1:
1 2 3 4 5 6 7 8 9 10 11 12 | """ 找出100~999之间的所有水仙花数 水仙花数是各位立方和等于这个数本身的数 如: 153 = 1**3 + 5**3 + 3**3 """ for num in range ( 100 , 1000 ): low = num % 10 mid = num / / 10 % 10 high = num / / 100 if num = = low * * 3 + mid * * 3 + high * * 3 : print (num) |
练习2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | """ 找出1~9999之间的所有完美数 完美数是除自身外其他所有因子的和正好等于这个数本身的数 例如: 6 = 1 + 2 + 3, 28 = 1 + 2 + 4 + 7 + 14 """ import math for num in range ( 1 , 10000 ): result = 0 for factor in range ( 1 , int (math.sqrt(num)) + 1 ): if num % factor = = 0 : result + = factor if factor > 1 and num / / factor ! = factor: result + = num / / factor if result = = num: print (num) |
练习3:
1 2 3 4 5 6 7 8 9 10 11 | """ 求解《百钱百鸡》问题 1只公鸡5元 1只母鸡3元 3只小鸡1元 用100元买100只鸡 问公鸡 母鸡 小鸡各有多少只 """ for x in range ( 0 , 20 ): for y in range ( 0 , 33 ): z = 100 - x - y if 5 * x + 3 * y + z / 3 = = 100 : print ( '公鸡: %d只, 母鸡: %d只, 小鸡: %d只' % (x, y, z)) |
练习4:
1 2 3 4 5 6 7 8 9 10 | """ 输出斐波那契数列的前20个数 1 1 2 3 5 8 13 21 ... """ a = 0 b = 1 for _ in range ( 20 ): a, b = b, a + b print (a, end = ' ' ) |
练习5:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | """ Craps赌博游戏 玩家摇两颗色子 如果第一次摇出7点或11点 玩家胜 如果摇出2点 3点 12点 庄家胜 其他情况游戏继续 玩家再次要色子 如果摇出7点 庄家胜 如果摇出第一次摇的点数 玩家胜 否则游戏继续 玩家继续摇色子 玩家进入游戏时有1000元的赌注 全部输光游戏结束 """ from random import randint money = 1000 while money > 0 : print ( '你的总资产为:' , money) needs_go_on = False while True : debt = int ( input ( '请下注: ' )) if 0 < debt < = money: break first = randint( 1 , 6 ) + randint( 1 , 6 ) print ( '玩家摇出了%d点' % first) if first = = 7 or first = = 11 : print ( '玩家胜!' ) money + = debt elif first = = 2 or first = = 3 or first = = 12 : print ( '庄家胜!' ) money - = debt else : needs_go_on = True while needs_go_on: current = randint( 1 , 6 ) + randint( 1 , 6 ) print ( '玩家摇出了%d点' % current) if current = = 7 : print ( '庄家胜' ) money - = debt needs_go_on = False elif current = = first: print ( '玩家胜' ) money + = debt needs_go_on = False print ( '你破产了, 游戏结束!' ) |
练习6:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | """ 猜数字游戏 计算机出一个1~100之间的随机数由人来猜 计算机根据人猜的数字分别给出提示大一点/小一点/猜对了 """ import random answer = random.randint( 1 , 100 ) counter = 0 while True : counter + = 1 number = int ( input ( '请输入: ' )) if number < answer: print ( '大一点' ) elif number > answer: print ( '小一点' ) else : print ( '恭喜你猜对了!' ) break print ( '你总共猜了%d次' % counter) if counter > 7 : print ( '你的智商余额明显不足' ) |
练习题7:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | """ 判断输入的正整数是不是回文数 回文数是指将一个正整数从左往右排列和从右往左排列值一样的数 """ num = int ( input ( '请输入一个正整数: ' )) temp = num num2 = 0 while temp > 0 : num2 * = 10 num2 + = temp % 10 temp / / = 10 if num = = num2: print ( '%d是回文数' % num) else : print ( '%d不是回文数' % num) |
练习8:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | """ 输出2~99之间的素数 """ import math for num in range ( 2 , 100 ): is_prime = True for factor in range ( 2 , int (math.sqrt(num)) + 1 ): if num % factor = = 0 : is_prime = False break if is_prime: print (num, end = ' ' ) |
练习9:
1 2 3 4 5 6 7 8 | """ 输出乘法口诀表(九九表) """ for i in range ( 1 , 10 ): for j in range ( 1 , i + 1 ): print ( '%d*%d=%d' % (i, j, i * j), end = '\t' ) print () |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!