此代码工作正常.....但它就像静态。 我不知道如何让它以动态方式运作? 我想要:- 当用户输入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)
答案 0 :(得分:2)
你应该做这样的事情
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)
您可以使用string formatting,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()
被赋予generator expression作为可迭代参数。字符串中的花括号({}
)是replacement fields(占位符),格式化时将由位置参数替换。例如
'{} {}'.format('a', 'b')
将生成字符串"a b"
,
# explicit positional argument specifiers
'{0} {1}'.format('a', 'b')
答案 2 :(得分:0)
创建另一个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