如何忽略含无效用户输入的循环迭代?Python开发问题求助
解决无效输入占用迭代次数问题:确保列表恰好有5个有效浮点数
直接修改findnums函数的循环逻辑即可,原来的for循环固定执行5次,无效输入会浪费迭代次数,换成while循环以列表长度为判断条件,只有有效输入才会推进计数:
def main(): v = [] findnums(v) printlist(v) def findnums(v): # 循环直到列表凑够5个有效浮点数 while len(v) < 5: try: val = float(input('Please enter your number: ')) v.append(val) except ValueError: print("That is an invalid input, please try again.") return v def printlist(v): print(v)
修改说明:
- 把固定次数的for循环换成
while len(v) < 5,这样只有当输入有效并添加到列表后,列表长度才会增加,直到达到5个元素才停止循环,无效输入不会占用有效计数的名额。 - 你之前尝试在except块调用
main()或findnums(v)会导致重复执行:调用main()会重新创建空列表并从头开始,而直接调用findnums(v)会继续往当前列表里加元素,最终导致多次输入请求和重复数据,完全没必要这么做。 - 把提示信息改成“please try again”更贴合实际,用户不需要重启程序,只需要重新输入一次即可。
内容的提问来源于stack exchange,提问作者Samurai 425
相关产品推荐
相关产品推荐

