我试图从下面的列表中找到以字母V开头的国家/地区的数量:
['USA', '249', '158', '84', '8.7'],
['Uruguay', '115', '35', '220', '6.6'],
['Uzbekistan', '25', '101', '8', '2.4'],
['Vanuatu', '21', '18', '11', '0.9'],
['Venezuela', '333', '100', '3', '7.7'],
['Vietnam', '111', '2', '1', '2.0'],
['Yemen', '6', '0', '0', '0.1'],
['Zambia', '32', '19', '4', '2.5'],
['Zimbabwe', '64', '18', '4', '4.7']
代码:
def countCountry(csv1):
count = 0
for item in csv1:
if '/V+' in item[0]:
count +=1
return count
不幸的是,count总是返回零。有人可以帮忙吗?
答案 0 :(得分:2)
尝试使用startswith
:
def countCountry(csv1):
count = 0
for item in csv1:
if item[0].startswith('V'):
count +=1
return count
print countCountry(a)
或者:
def countCountry(csv1):
return sum([True for i in csv1 if i[0].startswith('V')])
print countCountry(a)
答案 1 :(得分:2)
if '/V+' in item[0]:
Python不使用斜杠来表示正则表达式,in
执行精确搜索。导入和使用re
或使用str.startswith()
,如其他答案所示。
答案 2 :(得分:2)
只需sum(1 for row in csv if row[0][0] == 'V')
。
答案 3 :(得分:1)
您可以使用startswith
def countCountry(csv1):
count = 0
for item in csv1:
if item[0].startswith('V'):
count +=1
return count
或者您可以使用re
def countCountry(csv1):
count = 0
for item in csv1:
if re.match(r'V', item[0]):
count +=1
return count
答案 4 :(得分:1)
为什么您的代码无法按预期运行
您编写的代码始终返回零,因为第4行永远不会被评估为True。第4行始终为False,因为它正在检查'/V+'
是否与in
国家/地区的名称完全一致,'Japmeri/V+na'
永远不会是这种情况。此外,如果一个国家确实存在名称与1. def countCountry(csv1):
2. count = 0
3. for item in csv1:
4. if '/V+' in item[0]:
5. count +=1
6. return count
def countCountry(csv1):
count = 0
for item in csv1:
country_name = item[0].lower() # to ensure you're always checking against lowercase
if country_name.startswith('v'): # so that it's easy to read
count +=1
return count
修复
以下是如何使您的代码更好,我将比以前的答案更进一步,使其更具可读性和强大。
int[] hrs = { 8, 24, 9, 7, 6, 12, 10, 11, 23, 1, 2, 9, 8, 8, 9, 7, 9, 15, 6, 1, 7, 6, 12, 10, 11, 23, 1, 2, 9, 8 };
decimal fee;
const decimal HOURLY_RATE = 2.5m, MAX_FEE = 20;
decimal avg = 0;
decimal total = 0;
Console.WriteLine("Hours Parking Fee");
for (int count = 0; count < hrs.Length; count++)
{
Console.WriteLine("{0,3}", hrs[count]);
fee = hrs[count] * HOURLY_RATE;
if (fee > MAX_FEE)
{
fee = MAX_FEE;
}
Console.WriteLine("{0,13}", fee.ToString("C"));
// calculate average fee paid
{
total = total + fee;
}
}
avg = total / 30; //average = total / 30;
Console.WriteLine("average parking fee: " + avg.ToString("C"));
Console.ReadKey();
Console.ReadKey();
我希望这能回答你的问题。快乐的编码!