2016-12-02 6 views
1

나는 파이썬 프로그래밍 테스트를 위해 공부하고 있는데, 과거의 시험을 치러야하고이 질문에 조금 붙어있다. 문제는 sys 라이브러리를 사용하여 인수를 입력하는 것입니다.sys에서 가져 오기 import argv

내 프로그램은 단일 길이 문자를 입력 할 때만 작동합니다. 구분 기호 사이에 두 개 이상의 문자가있는 경우 (쉼표 사용) 프로그램은 나머지 프로그램이 작동하지 않는 방식으로 문자를 분할합니다. 내 프로그램이 작동 무엇

:

PS C:\Users\Michal\Desktop> python untitled5.py a,b,c 
Input answer: a,v,c 
x:['a', 'b', 'c'] y:['a', 'v', 'c'] lenx:3 leny:3 
grade: 3.5 

내 프로그램이 작동해야합니까 :

PS C:\Users\Michal\Desktop> python untitled5.py aa,bb,cc 
Input answer: aa,cc,dd 
x:['a', 'a', 'b', 'b', 'c', 'c'] y:['aa', 'cc', 'dd'] lenx:6 leny:3 
None 

내 코드 : 내가하고 시도

def grade(key,answer): 
    right=[] 
    wrong=[] 
    if len(x)==len(y): 
     for i in range(len(x)): 
      if x[i] == y[i]: 
       right.append(x[i])   
      else: 
       wrong.append(x[i]) 
     wynik = len(right)/(len(right)+len(wrong)) *100 
     if wynik >= 50 and wynik < 60: 
      print('grade: 3') 
     elif wynik >= 60 and wynik < 70: 
      print ('grade: 3.5') 
     elif wynik >= 70 and wynik < 80: 
      print ('grade: 4') 
     elif wynik >= 80 and wynik < 90: 
      print ('grade: 4.5') 
     elif wynik >= 90 and wynik <= 100: 
      print('grade: 5') 
    else: 
     print("None") 
if __name__ == '__main__': 
    from sys import argv 
    x = argv[1] 
    x = list(x) 
    x[:] = (value for value in x if value != ",") 
    y = list(map(str, input('Input answer: ').split(','))) 
    #print("x:{} y:{} lenx:{} leny:{}".format(x,y,len(x),len(y))) 
    grade(x,y) 

x = list(map(str, input('Input answer: ',argv[1]).split(','))) 
,536,913,632 10

하지만 아무 소용이 없습니다. 문자를 (사용자가 설정 한 수량)을 구분 기호로 직접 입력하는 방법이 있습니까?

args = sys.argv[1].split(',') 

을 물론 당신이 사용하는 어떤 구분 기호를 선택할 수 있습니다

+0

또한 [argparse] (https://docs.python.org/3/library/argparse.html)를 참조 할 수 있습니다. –

답변

4

당신은 간단하게 할 수 있습니다.

+0

감사합니다! 이제 작동합니다 : D – Baabda

+0

도움이 된 것을 기쁘게 생각합니다!, 똑같은 문제가있는 다른 사람들에게 도움이 될만한 권리로 표시 할 수 있습니다. – coder