我正在爲我的python編程測試進行學習,並且要通過過去的考試,並且在這個問題上有點困難。問題是使用sys
庫輸入參數。使用從sys導入輸入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(',')))
但無濟於事。有沒有辦法直接用設定的分隔符輸入字符(用戶設定的數量)?
你也可以看看[argparse](https://docs.python.org/3/library/argparse.html)... –