Dies ist das Modul, das ein zweidimensionales Array mit den Namen der Angestellten und ihren Gehältern eingibt. Hier nimmt das Programm nur eine Eingabe und fährt fort, anstatt weitere Eingaben hinzuzufügen, bis der Benutzer "*" eingibt. Wie behebe ich das?Wie man TypeError repariert: 'float' Objekt ist nicht einklagbar und ein .append funktioniert nicht
salary = []
names = []
def floatInput():
done = False
while not done:
nameIn = input("Please enter the employee name or * to finish: ")
salaryIn = input("Please enter the salary in thousands for " + nameIn + ": ")
try:
salaryIn = float(salaryIn)
except:
print("Program was expecting a positive integer or floating point number!")
if nameIn == "*":
done = True
else:
salary.append(salaryIn)
names.append(nameIn)
return salary
return names
Aufruf der Schwimmer Eingangsfunktion
floatInput()
hier verwende ich eine for-Schleife durch die Liste der Namen und Gehälter zu drucken und wiederholen.
for i in range(len(names)):
print(names[i] + ", " + str(salary[i]))
Hier finde ich den Mittelwert der Gehälter.
def salaryMean():
mean = sum(salary)/float(len(salary))
print("The mean of the salaries is: " + str(mean))
return mean
Aufruf der Gehalt Funktion bedeuten
salaryMean()
hier konvertiere ich das Gehalt zu Tausenden.
for i in range(len(names)):
salary = salary[i] * 1000
print(salary)
Hier zeige ich alle emplpyees, die 5000 aus dem Mittelwert $ innerhalb eines Bereichs von verdienen Dies ist, wo ich bin die
"TypeError: 'float' object is not subscriptable"
bekommen und es verweist auf die Linie
"if salary[x] >= (mean - 5000) and salary[x] <= (mean + 500):"
.... Wie repariere ich das?
def displayNames():
done = False
x = 0
while not done:
if done:
break
if salary[x] >= (mean - 5000) and salary[x] <= (mean + 5000):
print(salary[x])
x += 1
if x > len(salary):
done = True
Aufrufen des Anzeigenamens Funktion.
displayNames()