#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)