我的问题要求我显示一个菜单,其中包含有关如何处理已加载文件的选项。我应该能够计算所选txt文件的最小值,最大值和总和。所以我要求用户输入一个文件名以加载ex Alpha.txt。收缩集是必须有相等数量的行和列的数字4x4,5x5,12x12,依此类推。到目前为止,我的代码仅限于4x4行和数字列。顺便说一句,这不是功课,而是为即将进行的测验练习问题。我不想要一个解决方案,而只是帮助解释在给定情况下我应该做些什么。我想输入我自己的代码并学习,所以请不要认为即时通讯要求答案。谢谢! :)
目标表应该看起来像这样
-----------------------------------------------
| | A | B | C | D | E |
-----------------------------------------------
| 1 | 8.00 | 1.00 | 3.00 | 0.00 | 5.00 |
| 2 | 5.00 | 6.00 | 8.00 | 9.00 | 4.00 |
| 3 | 3.10 | 3.20 | 3.30 | 9.10 | 3.30 |
-----------------------------------------------
并且我应该能够根据输入的a-z或1 - 任意数量的列来计算基于列或行的所需选择
def main():
my_list = [[float(i) for i in line.split(',')] for line in open("Alpha.txt")]
print(my_list)
my_list_one = my_list[0]
my_list_two = my_list[1]
my_list_three = my_list[2]
my_list_four = my_list[3]
columnA = [my_list[0][0],my_list[1][0],my_list[2][0],my_list[3][0]]
columnB = [my_list[0][1],my_list[1][1],my_list[2][1],my_list[3][1]]
columnC = [my_list[0][2],my_list[1][2],my_list[2][2],my_list[3][2]]
columnD = [my_list[0][3],my_list[1][3],my_list[2][3],my_list[3][3]]
usrnput = input("Enter a row or column: ")
if usrnput == 'A' or usrnput == 'a':
print(min(columnA))
elif usrnput == 'B' or usrnput == 'b':
print(min(columnB))
elif usrnput == 'C' or usrnput == 'c':
print(min(columnC))
elif usrnput == 'D' or usrnput == 'd':
print(min(columnD))
elif usrnput == "1":
print(min(my_list_one))
elif usrnput == "2":
print(min(my_list_two))
elif usrnput == "3":
print(min(my_list_three))
elif usrnput == "4":
print(min(my_list_four))
main()
和alpha.txt包含
5,4,2,3.2
1,.2,4.4,8
3,8,6.5,2
3,2,1,5.3
现在我的问题在于,我显然不会考虑除了4x4之外的任何可能性。所以为了解决这个问题,我需要完全重做我的代码。
我真正要求的是对我需要做什么的人类语言解释是什么?我想把它转换成pythonic代码,所以我理解这个概念不仅仅是知道解决方案并且说啊是的我得到它而不实际做它因为这不会帮助我测验。
我非常确定我可以加载文件,如果我只是将“Alpha.txt”部分调整为变量并且fo = open(“userinput”)
但是如何从文件中生成嵌套列表并确定列或行的最小值或最大值或总和?我在想我应该使用len()和一个计数,但它并没有在我脑海里或纸上聚集在一起。我需要为此使用for循环,而不是将每列硬编码为新列表,并将每行作为列表,就像在我的代码中一样。
答案 0 :(得分:0)
我认为你应该使用循环和字典来访问列(按字母)或行(按数字)。
我会:
然后,在您返回列表后,您可以对其进行任何计算。
答案 1 :(得分:0)
my_list_one
等名称无用 - 更好地使用my_list[0]
columnA
相同 - 更好column['A']
或column[0]
len(my_list)
为您提供从文件len(my_list[0])
为您提供从文件my_list[index]
(或my_list[index-1]
)usrnput.lower()
给出较低的字母,您不必将其与大字母进行比较if usrnput in ('a', 'A'):
for index in range(len(my_list)):
或for row in my_list:
和column['A'].append(some_value_from_my_list)
等结构来创建列<强> @EDIT:强>
完整程序(Python 3)
#!/usr/bin/python3
def main():
# read file
all_rows = [[float(i) for i in line.split(',')] for line in open("Alpha.txt")]
# table size
rows_number = len(all_rows)
cols_number = len(all_rows[0])
print("size (rows x cols): {0}x{1}".format(rows_number,cols_number))
print()
# create columns (indexed by numbers)
all_columns = []
for col_index in range(cols_number):
all_columns.append([])
for row_index in range(rows_number):
all_columns[col_index].append(all_rows[row_index][col_index])
# print rows
print("rows")
for i,row in enumerate(all_rows):
print(i+1, ":", " , ".join(str(num) for num in row))
print()
# print cols
print("cols")
for i, col in enumerate(all_columns):
print(chr(ord('A')+i), ":", " , ".join(str(num) for num in col))
print()
# main loop
end = False
while not end:
usrnput = input("Enter a row or column (or 'Q' for quit): ").upper()
if usrnput in ('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L'):
index = ord(usrnput)-ord('A')
if index < cols_number:
print("min", all_columns[index], "=", min(all_columns[index]))
elif usrnput in ('1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'):
index = int(usrnput)-1
if index < rows_number:
print("min", all_rows[index], "=", min(all_rows[index]))
elif usrnput in ('Q'):
end = True
main()