Python if-else菜单实现、print格式化及功能测试问题咨询
Python控制台售货机程序常见问题解答
1. 是否可通过if else语句实现与参考代码一致的菜单显示效果
完全可以。现有参考代码用的是嵌套三元表达式,拆分为标准if-else分支后逻辑完全等价,可读性更高。注意判断顺序要和原有逻辑对齐:优先判断库存状态,库存充足时再校验投币金额,避免逻辑错乱。
对应实现代码:status = "" # 优先判断库存 if stock_a <= 0: status = "Sold out" else: # 库存充足再判断金额 if amount < item_a: status = "Insufficient coins" else: status = "Available" print("A. Snack 1 - - - - - - - - - - - - - $1.80: {}".format(status))上述代码和提供的参考三元表达式运行效果完全一致,没有任何逻辑差异。
2. 不使用
{}实现当前金额打印的方法最简便的方式是直接使用Python兼容的C风格
%格式化语法,不需要用到大括号占位符:# 直接用%.2f占位保留两位小数 print("Current amount: $%.2f" % (amount / 100))也可以直接做字符串拼接实现,完全不依赖格式化占位符:
print("Current amount: $" + "%.2f" % (amount / 100))3. 不使用
{}实现无效选中提示打印的方法同样可以通过
%格式化或者字符串拼接实现:# %s接收字符串参数 print("Selection %s not on menu." % insert.upper()) # 字符串拼接写法 print("Selection " + insert.upper() + " not on menu.")4. 测试程序卡滞触发逻辑的输入内容
这类控制台程序的卡滞基本都来自输入校验缺失,对应测试用输入分三类:
- 非法选项输入:输入菜单选项范围外的内容,比如菜单仅支持A/B/C/D选品时,输入数字、特殊符号、长度大于1的随机字符串(例如
123、xyz、!@#),测试程序是否会因无法匹配选项进入死循环 - 空值输入:连续多次直接按回车提交空内容、输入全空格内容,测试程序是否会因未做空值校验卡在等待输入状态
- 极端值输入:输入长度极大的字符串、混合不可见字符的内容,测试输入处理逻辑是否会异常阻塞
- 非法选项输入:输入菜单选项范围外的内容,比如菜单仅支持A/B/C/D选品时,输入数字、特殊符号、长度大于1的随机字符串(例如
内容的提问来源于stack exchange,提问作者yam
相关产品推荐
相关产品推荐

