我目前正在尝试遍历存储在列表中的元组并打印出前3个元素。它最初可以工作,但是随后又将第一个索引打印3次,我不知道为什么。以下代码:
if user_choice == "b":
for x in holiday_database:
for i in x:
if x.index(i) == 0:
print("\nPackage ", i)
if x.index(i) == 1:
print("Country: ", i)
if x.index(i) == 2:
print("City: ", i)
输出以下内容:
Package 1
Country: france
City: paris
Package 1
Package 1
Package 1
任何帮助将不胜感激,谢谢。
答案 0 :(得分:0)
根本不需要遍历元组。使用字符串格式。元组已经是用于字符串格式化参数的数据类型,因此您所需要做的就是对元组进行切片。
if user_choice == "b":
for x in holiday_database:
print('\nPackage %d\nCountry: %s\nCity: %s' % x[:3])
这假设Package
(即x[0]
)的数据类型为int
。如果它是str
,则只需将%d
更改为另一个%s
。
答案 1 :(得分:0)
看起来错误是数据;如果 holiday_database 为 [(1,“ france”,“ paris”),(1,),(1,),(1,)]
但是,您可以通过多种方式更简洁地重写代码。我建议拆开元组:
for record in holiday_database:
package_num, country, city = record
print("\nPackage:", package_num)
print("Country:", country)
print("City:", city)
之所以可行,是因为 package_num,国家/地区,城市本身是一个元组表达式,因此python可以将每个变量与数据进行匹配。如果元组的大小不正确,则会抛出错误。