使用sys import argv输入

时间:2016-12-02 22:08:14

标签: python python-3.x sys

我正在为我的python编程测试而学习,而且我正在考试过去的考试,并且对这一个问题感到有些困惑。问题在于使用sys库输入参数。

我的程序有效,但只有在输入单长字符时才有效。如果分隔符之间有两个以上的字符(我使用了逗号),那么程序会以一种方式将其拆分,使得程序的其余部分无法工作。

我的计划适用于:

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

但无济于事。有没有办法直接使用set delimiter输入字符(用户设置的数量)?

1 个答案:

答案 0 :(得分:4)

您可以这样做:

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

当然你可以选择使用哪个分隔符。