Python中while循环数据无法append到列表的问题求助
问题分析与解决
核心问题
你代码里的substitution = print(...)是错误的——print()函数执行后返回值固定为None,所以每次往nth列表里添加的都是None。另外你仅替换了字符串中的i,没有计算表达式的实际数值,自然得不到预期的数字列表。
修正后的代码
structure = input("Equation: ") print("RANGE") upper_lim = int(input("Upper limit: ")) value_i = int(input("The value of 'i': ")) nth = [] # 初始化为空列表,无需默认空字符串 while value_i <= upper_lim and "i" in structure: # 替换i为当前数值,生成可计算的表达式字符串 expr_str = structure.replace("i", str(value_i)) # 计算表达式的数值结果 calc_result = eval(expr_str) # 打印替换后的表达式及结果(可选,按需保留) print(f"{expr_str} = {calc_result}") # 将计算结果添加到列表 nth.append(calc_result) value_i += 1 print(nth)
关键说明
- 合并了原代码中冗余的两个
while循环,统一逻辑判断 - 使用
eval()执行替换后的表达式字符串,得到实际数值结果 - 初始化
nth为空列表,避免初始空字符串干扰最终结果
示例运行效果
假设输入:
Equation: 3*i - 1 RANGE Upper limit: 4 The value of 'i': 1
输出:
3*1 - 1 = 2 3*2 - 1 = 5 3*3 - 1 = 8 3*4 - 1 = 11 [2, 5, 8, 11]
内容的提问来源于stack exchange,提问作者Drew0429
相关产品推荐
相关产品推荐

