在我的代碼中,項目百分比不添加到for循環的每次迭代中的列表lnpercentgrade,但我不知道爲什麼。當我嘗試在lnpercentgrade(代碼結尾)中彙總項目時,我返回0,因爲lnpercentgrade是empy。 我將lnpercentgrades聲明爲maininput()函數之外的全局變量,因爲否則在代碼底部時,當我嘗試求和(lnpercentgrades)時,我返回「lnpercentgrades not defined」。項目不附加到列表,或列表返回爲空python?
我猜在maininput()函數內部不會修改lnpercentgrades,儘管我確信我在.append函數之前正確地輸入了它。
什麼我真的想做的是與100相匹配的總和(lnpercentgrades),但是當我進入5個項目全部爲20的值,總和爲0,而不是100
重要線路都標用箭頭< < < < < < < < < < < < < < < < < < < < <
lnpercentgrades = [] <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
def maininput():
numtests = int(input("Enter # of tests:"))
numassign = int(input("Enter # of assignments:"))
numquizzes = int(input("Enter # of quizzes:"))
numlabs = int(input("Enter # of labs:"))
l = [numtests, numassign, numquizzes, numlabs]
ln = ["test", "assignments", "quizzes", "labs"]
lnpercentgrades = [] <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
testwavg = None
numassignwavg = None
numquizzeswavg = None
numlabswavg = None
numfinalwavg = None
lnwavg = [testwavg, numassignwavg, numquizzeswavg, numlabswavg]
print(l[0])
print("Is there a separately weighted final?")
yn = int(input("Enter 1 for yes. 2 for no:"))
while (yn > 2 or yn < 1):
yn = int(input("Enter 1 for yes. 2 for no, please:"))
n = 4
if yn == 1:
final = 1
l.append(final)
ln.append("final")
lnwavg.append(numfinalwavg)
n = 5
for i in range (n):
if l[i] > 0:
print("Enter % of total grade of",ln[i],":")
percentgrade = float(input(""))
print("you inputed:", percentgrade)
lnpercentgrades.append(percentgrade) <<<<<<<<<<<<<<<<<<<<<<
percentgrade = percentgrade*.01
varscoreslist = []
for x in range(l[i]):
print("Enter score of", ln[i], x+1,"as a fraction:")
from fractions import Fraction
inputfrac = input("")
varscore = float(sum(Fraction(s) for s in inputfrac.split()))
#the above converts fractional inputs to decimals
varscoreslist.append(varscore)
if ln[i] == "labs":
score = sum(varscoreslist)
else:
sumscores = sum(varscoreslist)
score = sumscores/l[i]
lnwavg[i] = score*percentgrade
maininput()
print(lnpercentgrades)
print("sum of percent of grades", sum(lnpercentgrades)) <<<<<<<<<<<<<<<
if float(sum(lnpercentgrades)) != 100: <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
print("Sorry, the grade percent of each item enter did not sum to 100:")
print("Program will rerun.")
input("")
maininput()
coursegrade = sum(lnwavg)
print("Your course grade is:", coursegrade)
input("")
爲什麼不把它作爲返回函數結果 - 那麼你並不需要的功能 –
RocketDonkey人之前指定它準備完成你需要的所有解釋 –