массив в качестве аргумента позиции - PullRequest
0 голосов
/ 24 октября 2018
try:
    target = int(input("Please enter the ammount you are looking for :"))
except ValueError:
    print("wrong value please enter a number")
    target = int(input("Please enter the ammount you are looking for :"))
found = False
location = [] # I want to use this list as position argument for another array passed from another function. is it possible?


for pos in range(0, len(wydatki)):
    if wydatki[pos] == target:
        found=True
        location.append(pos)

if found==True:
    #prints the locations in the list that the target was found
    print (target,"\nappears in the following locations: ",months[location])
else:
    print (target,"\nwas not found in the list.")

месяцев [местоположение] <------ Я хотел бы использовать список, называемый местоположение, который содержит более одной переменной для печати на экранных значениях, назначенных позициям в списке, называемом месяцами.это возможно? </p>

Как обычно, вы можете использовать только одну переменную для указания позиции в массиве?

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Как вы заметили, вы не можете передать список и использовать его в качестве индекса.

Вам придется циклически проходить по каждому индексу или создать одну полную строку и распечатать ее.

Например,

print(target,"\nappears in the following locations: ", end="")
for index in location:
    print(months[index], end=" ")
print("")

end="" означает, что print добавит пустую строку в конце вместо обычной новой строки.

Также вы можетеулучшить ваш код двумя другими способами.

Логическое значение found может соответствовать списку location с любыми значениями в нем, поэтому

if location: # an empty list evaluates to False
  print("Found")
else:
  print("Not found")

И ваш ввод может выглядеть следующим образомвместо этого

target = None
done = False
while not done:
  try:
    target = int( input("Please enter the amount you are looking for:") )
    done = True
  except ValueError:
    print("Wrong value, input a number.")

, поэтому пользователь может несколько раз потерпеть неудачу, и программа не будет запущена.

0 голосов
/ 24 октября 2018

Вы можете изменить битовый вывод:

target = 42
location = []
# 42 occures at positions 3,6,8
#           0 1 2 3  4 5 6  7 8  9
wydatki = [ 1,2,3,42,4,5,42,6,42,8]

#         pos: 01234567890
months = list("abcdefghijk")

# get the positions unsing enumerate
for pos,value in enumerate(wydatki):
    if value == target:
        location.append(pos)

if location: # empty lists are False, lists with elements are True
    #prints the locations in the list that the target was found
    print (target,"\nappears in the following locations: ", 
           ','.join( (months[a] for a in location) ) )
else:
    print (target,"\nwas not found in the list.")

Вывод:

42 
appears in the following locations:  d,g,i

По сути, вам нужно подключить и объединить все записи месяца в строку - например, используявыражение генератора внутри оператора ","join( ... ).

...