You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Python代码以在循环执行前检查饼干包是否已为空

代码修改方案

原有问题

原代码没有做空包校验,当所有饼干都被抽取完后,如果用户继续选择要饼干,会触发random.randint(0, -1)的参数错误,程序直接崩溃。

修改思路

每次执行抽取逻辑前先判断饼干包是否为空,若为空直接终止循环,不再询问用户是否需要饼干,同时给出空包提示。
额外可优化用户输入的大小写兼容,支持用户输入小写y/n也能正常识别。

中文适配版完整代码

import random

biscuits = []

biscuits.extend(['蒙特卡洛']*7)
biscuits.extend(['黄油奶油酥']*7)
biscuits.extend(['德尔塔奶油']*6)
biscuits.extend(['香橙切片']*6)
biscuits.extend(['金斯顿']*5)

print('\n家庭什锦饼干包\n')

print('包内共有', len(biscuits), '块饼干')

print('\n', biscuits, '\n')

more = input('\n你想要一块饼干吗?(Y/N)... ')

while more.upper() != 'N':
    # 新增空包校验逻辑
    if len(biscuits) == 0:
        print('抱歉,饼干已经被拿完啦')
        break
    choice = random.randint(0, len(biscuits)-1)
    print('你拿到的饼干是:', biscuits[choice])
    del biscuits[choice]
    more = input('\n你想要一块饼干吗?(Y/N)...')

print('\n剩余', len(biscuits), '块饼干')
print('\n', biscuits, '\n')

保留原英文提示的最小修改方案

仅需在原有循环开头新增空校验逻辑即可,其他代码无需调整:

while more != 'N':
    # 新增空包校验
    if not biscuits:
        print('The biscuit pack is empty!')
        break
    # 原有抽取逻辑保持不变
    choice = random.randint(0,len(biscuits)-1)
    print('Your biscuit is : ', biscuits[choice])
    del biscuits[choice]
    more = input('\nWould you like a biscuit (Y/N)...')

内容的提问来源于stack exchange,提问作者kate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 11:18:03