我有一个制作表格的函数
--------------------------------------------------------------------
|Name | A | B | C | D | E |
--------------------------------------------------------------------
| 1 | 1.0 | 2.0 | 3.0 | 4.0 | 5.0 |
| 2 | 6.0 | 7.0 | 8.0 | 9.0 | 0.0 |
| 3 | 1.1 | 2.2 | 3.3 | 0.1 | 0.3 |
--------------------------------------------------------------------
之后,我需要询问用户他们需要做什么,或者获得最小值或最大值。之后,我需要询问他们是否想要通过行或列进行最小化,到目前为止,我可以获得第1行的最小值,但是当我尝试执行第2行或任何列时,它仍然会返回第1行的相同值
def minimum(y,l):
for y in l:
if y == 1:
i= 0
w=(l[i],l[i+1],l[i+2],l[i+3],l[i+4])
a= min(l[i],l[i+1],l[i+2],l[i+3],l[i+4])
elif y == 2:
i = 5
w=(l[i],l[i+1],l[i+2],l[i+3],l[i+4])
a= min(l[i],l[i+1],l[i+2],l[i+3],l[i+4])
return a
def menu(x,l):
if x == 1:
make_table(l)
if x == 2:
y = input("enter a row (as a number) or a column (as an uppercase letter)")
if y in [ '1','2','3']:
mini = minimum(y, l)
print("Minimum is:", mini)
if x == 3:
print ('bye')
我需要一个min的帮助然后我可以以相同的方式工作max,谢谢
答案 0 :(得分:0)
def minimum(y,l):
a = 0
for y in l:
if y == 1:
i= 0
w=(l[i],l[i+1],l[i+2],l[i+3],l[i+4])
a= min(l[i],l[i+1],l[i+2],l[i+3],l[i+4])
elif y == 2:
i = 5
w=(l[i],l[i+1],l[i+2],l[i+3],l[i+4])
a= min(l[i],l[i+1],l[i+2],l[i+3],l[i+4])
return a
如果用户输入3,你会怎么做?你尚未考虑这个案例。
答案 1 :(得分:0)
为什么不将值存储在numpy 2d数组中?
import numpy as np
a = np.array(l).reshape(3,5)
minByCol = np.amin(a, axis=0) #array([ 1. , 2. , 3. , 0.1, 0. ])
minByRow = np.amin(a,axis=1) #array([ 1. , 0. , 0.1])
编辑: 由于你不能导入任何东西,我认为这是一种任意的家庭作业问题。
我不倾向于为你做功课,但这里有一些想法。为什么不采取切片而不是笨拙的a=min(l[i],l[i+1],l[i+2],l[i+3],l[i+4])
a = min(l[i:i+5])
而不是针对每种情况采取案例并手动设置i
的值,为什么不根据i
的值设置y
的值,然后你就可以摆脱if
个陈述。如果是一个包含5列的表,则按行排列i = (y-1)*5
答案 2 :(得分:0)
您是否知道可以使用列表作为参数调用min
或max
?
假设您的数据类似于:
l= [[1.0, 2.0, 3.0, 4.0, 5.0],
[6.0, 7.0, 8.0, 9.0, 0.0],
[1.0, 2.2, 3.3, 0.1, 0.3]]
如果用户想要行y的最小值,则只需调用min(l[y-1])
(即如果您的行从1开始编号)
现在,如果用户想要一个列的分钟,那就更困难了(但只是一点点)
首先你必须从信中得到索引。 ord
函数将char转换为int。 “A”为65,因此要获取列索引,请调用index = char(letter)-65
。
然后,您需要转置原始数据的行和列。 zip
功能可以帮助您实现这一目标。
所以:
index = char(letter) - 65
transpo = zip(*l)
print min(transpo[index])