2013-10-29 3 views
1

내 질문에로드 된 파일에 수행 할 작업 옵션에 대한 메뉴가 표시됩니다. 내가 선택한 txt 파일의 최소, 최대 및 합계를 계산할 수 있어야합니다. 그래서 사용자에게 파일 이름을 입력하여 ex Alpha.txt를로드하도록 요청합니다. 수축 세트는 4x4, 5x5, 12x12 등의 행과 열의 동등한 양이 있어야한다는 것입니다. 내 코드는 지금까지 4x4 행과 열의 수를 고려합니다. Btw는 숙제가 아니라 오히려 다가오는 퀴즈 문제를 연습합니다. 나는 해결책을 원하지만 오히려 그냥 주어진 상황에 따라해야 할 일을 해석하는 데 도움이된다. 나는 내 자신의 코드를 타이핑하고 배우기를 바랍니다. 나는 대답을 묻는 메신저를 생각하지 마십시오. 감사! :)프로그램을 만드는 단계를 해석하는 데 문제가 발생했습니다.

목표 테이블이

----------------------------------------------- 
|  | 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 | 
----------------------------------------------- 

다워야하고, 내가 입력하거나 az 또는 열

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를 열어 ("UserInput 사용자")를

을하지만 어떻게 내가 내가 생산 중첩 된 목록을한다면 내가 파일을로드 할 수 있습니다 확신 메신저 파일에서 가져 와서 열 또는 행의 최소 또는 최대 또는 합을 결정 하시겠습니까? 나는 내가 len()과 카운트를 사용해야한다고 생각했지만 그것은 내 머리 속에 또는 종이에 함께 오지 않는다. 그리고 각 코드를 새로운 목록으로 하드 코딩하는 대신 for 루프를 사용하고 각 행을 내 코드처럼 목록으로 사용해야합니다.

답변

0
  • 이름은 쓸모 - columnAmy_list[0]
  • 같은보다 효율적으로 사용 - 더 나은 당신이
  • len(my_list[0]) 당신에게 얼마나 많은 열을 제공
  • 파일에서로드 행 수 column['A'] 또는
  • len(my_list)column[0]는 당신을 줄 파일에서로드
  • 사용자 입력 번호 ("1", "2")를 문자열에서 정수로 변환하고 my_list[index] (또는)
  • usrnput.lower() 낮은 편지를주고 당신은 큰 편지
  • 과 비교하지 않아도 또는 열

을 만들 for index in range(len(my_list)): 또는 for row in my_list:column['A'].append(some_value_from_my_list)처럼 if usrnput in ('a', 'A'):

  • 사용 구조물을 사용할 수 있습니다 @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() 
    
  • +0

    나는 사용할 수있다! :). 열의 최대/최소 계산을 위해 테이블이 선택된 txt 파일을 기반으로하는 변수 인 경우 A-Z가 무엇인지를 어떻게 판별합니까? – user2840144

    +0

    전체 프로그램을 추가합니다. – furas

    0

    나는 당신이 열 (문자로) 또는 행 (숫자로)에 액세스하려면 루프와 딕트를 사용해야한다고 생각한다.

    나는 것 :

    1. 은 원시 입력을하고 수, 그냥 목록
    2. 편지 만일의 목록의 인덱스를 잡아으로 바꿀 경우 숫자/문자
    3. 의 여부를 결정 int를 dict을 통해 읽고 하위 목록에서 해당 색인을 가져 와서 목록으로 변환하십시오.

    반환 된 목록이있는 경우 원하는 계산을 수행 할 수 있습니다.my_list_one 같은

    +0

    감사합니다! 나는이 제안을 사용하여 다시 내 코드를보고 할 것이다. – user2840144

    +0

    또한 'ord (my_letter.upper()) - ord ('A ')'를 수행하여 숫자로 변환 할 수있다. –

    관련 문제