用python编写一个程序,生成一个3行3列的列表ylist,若xlist的值大于其所有元素的平均值,则ylist该位置上的值为1,否则为0
xlist=[]
for i in range(3):
xlist.append([ ])
for j in range(3):
x=eval(input(""))
xlist[i].append(x)
#代码开始
……
#代码结束
for i in range(3):
for j in range(3):
print(ylist[i][j],end="")
print()
预期输出:
000
110
110
和
000
000
111
没输入样例?
xlist=[]
for i in range(3):
xlist.append([ ])
for j in range(3):
x=eval(input(""))
xlist[i].append(x)
#代码开始
ylist=[[0 for i in range(3)] for j in range(3)]
avg=sum(sum(xlist,[]))/9#均值
#print(avg)
for i in range(3):
for j in range(3):
if xlist[i][j]>avg:
ylist[i][j]=1
#代码结束
for i in range(3):
for j in range(3):
print(ylist[i][j],end="")
print()
我偷懒“输入”,把3×3的矩阵数列用random随机了。😀
from random import choice
xlist=[]
for i in range(3):
xlist.append([ ])
for j in range(3):
x = choice(range(10)) # x=eval(input("输入:"))
xlist[i].append(x)
print('\nxlist:\n')
for i in range(3):
for j in range(3):
print(xlist[i][j], end=" ")
print()
print('\nylist:\n')
#代码开始
ylist = [[0 for i in range(3)] for i in range(3)]
#mean_x = sum(sum(xlist[i]) for i in range(3))/9
mean_x = sum(sum(xlist, []))/9 # 才学到的,不明其理,但与我原来的解析写法同效,help(sum)也没找到这种用法说明。
print(mean_x)
for i in range(3):
for j in range(3):
if xlist[i][j] > mean_x:
ylist[i][j] = 1
print(f'({i}, {j})', xlist[i][j], '>', round(mean_x, 2), ylist[i][j], xlist[i][j] > mean_x)
print(ylist)
#代码结束
for i in range(3):
for j in range(3):
print(ylist[i][j],end="")
print('')
运行效果截图
我最初ylist = [[0]*3]*3,这样初始化,得不到正确结果。这是曾经踩过的坑,打印查bug的代码不注释掉了,以引起有我同样踩的伙伴共勉。😀