簡體   English   中英

從列表中按姓名查找工資信息

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM