如何动态打印列表值?

时间:2016-10-12 10:24:26

标签: 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)

3 个答案:

答案 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 formattingstr.joinenumerate的组合构建字符串:

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