Как динамически печатать значения списка?

#python

#python

Вопрос:

Этот код работает нормально…..Но это похоже на статику. Я не знаю, что сделать, чтобы заставить его работать динамично? Я хочу: — Когда пользователь вводит 3 числа городов, он должен выдавать

a =»Вы хотели бы посетить » li [0] » как город 1 и » li [1] » как город 2 и » li[2] » как город 3 в вашей поездке»

Аналогично, когда ввод составляет 5 городов, он должен идти в 5 раз

 li = []
global a

number_of_cities = int(raw_input("Enter Number of Cities -->"))
for city in range(number_of_cities):
   li.append(raw_input("Enter City Name -->"))
print li
a="You would like to visit " li[0] " as city 1 and "  li[1]  " as city 2 and " li[2] " as city 3 on your trip"      
print a
a = a.split(" ")
print "nSplitted First Sentence looks like"
print a
print "nJoined First Sentence and added 1"
index = 0
for word in a:
   if word.isdigit():
      a[index] = str(int(word) 1)
   index  = 1
print " ".join(a)
  

Комментарии:

1. Можете ли вы исправить свой отступ?

Ответ №1:

Вы должны сделать что-то вроде этого

 a = 'You would like to visit '   ' and '.join('{0} as city {1}'.format(city, index) for index, city in enumerate(li, 1))   ' on your trip'
  

Комментарии:

1. Но что означает ‘{0} как город {1}’ в вашем коде??

2. Если аргументы в format находятся в том же порядке, что и ссылки {} в строке, числа являются необязательными.

3. @StavanShah это форматирование строки, вы можете прочитать об этом здесь: docs.python.org/2/library/stdtypes.html#str.format

4. @nostradamus числа являются необязательными, но если вы явно укажете их, функция форматирования будет работать немного быстрее

Ответ №2:

Вы можете создать строку с помощью комбинации форматирования строки str.join и enumerate :

 a = "You would like to visit {} on your trip".format(
    " and ".join("{} as city {}".format(city, i)
                 for i, city in enumerate(li, 1)))
  

str.join() в качестве итеративного аргумента задается выражение генератора. Фигурные скобки ( {} ) в строках являются заменяющими полями (заполнителями), которые будут заменены позиционными аргументами при форматировании. Например

 '{} {}'.format('a', 'b')
  

создаст строку "a b" , как

 # explicit positional argument specifiers
'{0} {1}'.format('a', 'b')
  

Ответ №3:

создайте еще один цикл for и сохраните ваши города в массиве. послесловие, объедините массив с помощью «join» и поместите все внутри строки:

 cities = []
for i in range(0,len(li), 1):
    cities.append("%s as city %i" % (li[i], i))

cities_str = " and ".join(cities)
a = "You would like to visit %s on your trip" % (cities_str) # edited out the   sign
  

Комментарии:

1. извините, это должно быть так: a = «Вы хотели бы посетить %s в своей поездке» % (cities_str)