[英]Look up salary information by name from a list
我正在編寫一些 Python 代碼來計算一個人的總工資。
我可以通過讓用戶輸入他們的工資來做到這一點,但是我希望他們能夠輸入他們的姓名,然后在列表的位置 0 中搜索該姓名(例如 0,1 0,2 0 ,2 等)。
我試過使用元組,但它不可調用,字典和列表也不適合我。
counter = 0
valid = 0
employeelist = [["thomas","2","500"], ["jake","1","750"]]
while True:
while True:
try:
name = str(input("Name:"))
except ValueError:
print("Error")
continue
else:
break
while True:
if name == employeelist[counter,0]:
print(employeelist[counter])
break
valid = 1
elif counter = 3:
print("invalid name")
break
else:
counter = counter + 1
if valid == 1:
break
months = employeelist[counter,1]
pay = employeelist[counter,1]
totalpay = int(months) * int(pay)
編輯:
我不再有字典的代碼,但是我只是將代碼從 [counter,1] 和 [0,1] 編輯到 [counter][1] 並且工作正常,謝謝:D
下面的代碼用於您的內部循環
employeelist = [["thomas","2","500"], ["jake","1","750"]]
name = ""
while True:
try:
name = input("Name:")
break
except:
print "Error"
position = -1
for i, element in enumerate(employeelist):
if element[0] == name:
position = i
break
if position == -1:
print "Invalid Name"
else:
totalpay = int(employeelist[position][1]) * int(employeelist[position][2])
您的代碼有多個錯誤。 首先, valid=1
,在打破循環后設置 - 意思是valid=1
,永遠不會設置。 您也在以這種方式檢查elif counter = 3
,您應該使用兩個等號,如下所示: elif counter == 3
您遇到的錯誤,列表索引必須是整數或切片,而不是元組,這是因為您以錯誤的方式訪問多維數組。 而不是name == employeelist[counter, 0]
,它應該是name == employeelist[counter][0]
。
您遍歷數組的方式是可能的,但使用 for 循環更簡單。
試試這個方法。
for employees in employeelist:
if name == employees[0]:
print(employee)
valid = 1
break
如果它遍歷孔員工列表,沒有if
-block 運行, valid = 1
,將永遠不會被設置。
工作代碼:
counter = 0
valid = 0
employeelist = [["thomas","2","500"], ["jake","1","750"]]
while True:
while True:
try:
name = str(input("Name: "))
except ValueError:
print("Error")
continue
else:
break
for employees in employeelist:
if name == employees[0]:
print(employees)
valid = 1
break
if valid == 1:
break
months = employeelist[counter][1]
pay = employeelist[counter][2]
totalpay = int(months) * int(pay)
print(totalpay)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.