Python二维数组无法循环输入值的问题求助
问题分析与修复方案
嘿,我一眼就看到两个导致你问题的关键点,咱们一个个说:
1. 数组维度完全搞反了
你想要的是arr[days][count]——也就是第一个索引对应天数(范围是week),第二个对应奶牛数量(numcows),但你现在的初始化代码写反了:
arr = [[0 for row in range(week+1)] for column in range(numcows)]
现在这个数组的第一个维度是奶牛数量,第二个是天数,和你预期的索引逻辑完全不匹配,这直接导致你赋值的位置全错了。
2. while days == 1循环把后续逻辑全堵死了
当days=1的时候,这个while循环会一直跑(因为没有终止条件),就算你完成了第一天的输入,它也不会退出;而当days>1的时候,这个while的条件不成立,里面的输入代码根本不会执行,自然没法给arr[2][0]这类位置赋值。
修正后的可运行代码
我调整了数组维度,去掉了多余的while循环,现在能覆盖所有天数和奶牛的输入:
# 先定义好示例中的参数,你可以根据实际情况修改 week = 3 numcows = 2 # 修正数组维度:第一个维度是天数(week+1,因为days从1到week),第二个是奶牛数量 arr = [[0 for _ in range(numcows)] for _ in range(week+1)] for days in range(1, week+1): for count in range(numcows): # 直接给对应位置赋值,不需要while循环 arr[days][count] = float(input(f"请输入第{days}天、第{count+1}头奶牛的数据:")) # 打印验证结果 print("最终数组:", arr)
核心修改说明
- 数组维度修正:改成
[[0 for _ in range(numcows)] for _ in range(week+1)],这样arr[days][count]就精准对应第days天、第count头奶牛的数据,和你的需求完全匹配。 - 移除无效while循环:原来的
while days ==1完全是多余的,直接让循环遍历所有天数和奶牛,就能给每个数组位置都赋值。 - 添加输入提示:给
input加了明确的提示文本,你输入的时候能清楚知道当前操作的是哪组数据,避免混乱。
这样修改后,当week=3、numcows=2时,你就能依次给arr[1][0]、arr[1][1]、arr[2][0]、arr[2][1]、arr[3][0]、arr[3][1]这些位置输入数值了。
内容的提问来源于stack exchange,提问作者jjeon2
相关产品推荐
相关产品推荐

