如何修改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
相关产品推荐
相关产品推荐

