如何在输入空行时停止向列表添加值并解决float转换报错
错误原因
- 循环条件逻辑错误:你定义的
i是整数计数变量,用i != ""作为循环终止条件永远成立,循环无法主动停止 - 空输入未做前置判断:按下回车键输入空行时,
input()会返回空字符串'',直接传入float()执行类型转换必然触发类型错误
修正方案
先读取输入内容判断是否为空,空则跳出循环,非空再转换为浮点数存入列表,不需要额外的计数变量控制循环,修正后代码如下:
def main(): signal = [] print("Enter the data points of the signal. Stop with empty line.\n") while True: input_str = input() # 输入为空直接终止循环 if input_str == "": break # 非空输入再做类型转换 value = float(input_str) signal.append(value) print(signal) main()
如果需要进一步兼容非数字的非法输入场景,可以加上异常捕获逻辑,避免输入非数字内容时程序崩溃:
def main(): signal = [] print("Enter the data points of the signal. Stop with empty line.\n") while True: input_str = input() if input_str == "": break try: value = float(input_str) signal.append(value) except ValueError: print("Invalid input, please enter a number or empty line to stop.") print(signal) main()
内容的提问来源于stack exchange,提问作者K K
相关产品推荐
相关产品推荐

