2016-12-02 14 views
1

私はPythonプログラミングテストのために勉強しています。私は過去の試験に行きますが、この1つの質問にちょっと悩まされました。問題は、sysライブラリを使用して引数を入力することです。from sys import argvを使って入力する

私のプログラムは動作しますが、1文字の長さの文字を入力した場合のみ動作します。区切り文字の間に2つ以上の文字がある場合(私はカンマを使用した)、プログラムは残りのプログラムが動作しないように分割します。私のプログラムは、のために働く何

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(','))) 

ですが、ご利用いただけません。設定された区切り文字を使用して文字(ユーザーが設定した数量)を直接入力する方法はありますか?

+0

また、[argparse](https://docs.python.org/3/library/argparse.html)をご覧ください。 –

答えて

4

あなたは、単に行うことができます。

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

そしてもちろん、あなたは何を使用するか、区切り文字を選択することができます。

+0

ありがとうございます!それは今働きます:D – Baabda

+0

喜んで助け!!!、あなたがそれを正しく見つけるならば、同じ問題を持つ他の人に役立つようにそれを正しくマークすることができます... – coder

関連する問題