Python while循环无返回值问题求助:计算等价小派数量的函数调试
嘿,刚入门计算机科学就遇到代码卡壳太正常啦,我来帮你一步步找出问题,搞定这个作业!
先说说你代码里的问题
首先是语法错误:函数定义那行末尾少了冒号 :,也就是 def quantity_of_pies(pie1, pie2): 才对,少了这个冒号Python根本识别不了函数块,直接就报错了。
然后是更关键的逻辑错误:你的循环方向完全搞反啦!你现在是把大派的面积不断加上小派的面积,直到能整除——这完全不是计算“多少个小派等价于一个大派”的思路,甚至可能陷入无限循环(比如大派面积5,小派3,你会一直加3,结果永远余2,循环停不下来,这就是代码没返回值的原因!)
正确的思路是什么?
咱们的目标是:计算需要多少个小派的总面积,能等价(至少等于)一个大派的面积。核心逻辑就是用大派面积除以小派面积,如果能整除,商就是数量;如果有余数,就把商加1(向上取整)。
修正后的代码
这里给你两种实现方式,选你顺手的用:
方式1:用math模块的向上取整函数
import math def quantity_of_pies(pie1, pie2): # 先处理特殊情况:如果有派面积为0,直接返回0(或者根据需求报错) if pie1 == 0 or pie2 == 0: return 0 # 先区分大派和小派的面积 large_pie = max(pie1, pie2) small_pie = min(pie1, pie2) # 计算需要的小派数量:向上取整 num_of_pies = math.ceil(large_pie / small_pie) return num_of_pies
方式2:用整数运算实现向上取整(不用导入模块)
如果不想用math模块,可以用整数运算的小技巧实现向上取整:
def quantity_of_pies(pie1, pie2): if pie1 == 0 or pie2 == 0: return 0 large_pie = max(pie1, pie2) small_pie = min(pie1, pie2) # 整数运算公式:(被除数 + 除数 - 1) // 除数 num_of_pies = (large_pie + small_pie - 1) // small_pie return num_of_pies
测试一下效果
比如:
- 大派面积10,小派3 → 返回4(3×4=12,刚好覆盖大派面积)
- 大派面积9,小派3 → 返回3(刚好等价)
- 大派面积10,小派7 → 返回2(7×2=14≥10)
内容的提问来源于stack exchange,提问作者Iplaysoccer
相关产品推荐
相关产品推荐

