2015-06-22 2 views
1
функции

Count подсчитывать только последнюю строку моего спискафункция Count подсчета только последнюю строку моего списка

N = int(raw_input()) 
cnt = [] 
for i in range(N): 
    string = raw_input() 
for j in range(1,len(string)): 
    if string[j] =='K': 
     cnt.append('R') 
    elif string[j] =='R': 
     cnt.append('R') 
if string[0] == 'k': 
    cnt.append('k') 
elif string[0] == 'R': 
    cnt.append('R') 
print cnt.count('R') 

если я даю вход: -

2 
RKKRK 
RKKR` 

Это даст ответ последней строки толькоот RKKR

+2

Посмотрите внимательно на отступа; где, по-вашему, заканчивается цикл 'in in range (N)'? –

+0

строковая переменная написана RKKR, и первый вход RKKRK потерян, поэтому строка содержит только RKKRK – Bharadwaj

+0

да u правы, но как я это сделал –

ответ

1

Я не знаю, чего вы точно пытаетесь достичь, но если вы пытаетесь подсчитать R и K в строке, есть более элегантные способы ее достижения. Но для вашей справки я изменил ваш код.

N = int(raw_input()) 
s = [] 
for i in range(N): 
    s.append(raw_input()) 
for string in s: 
    cnt = [] 
    for j in range(1,len(string)): 
     if string[j] =='K': 
      cnt.append('R') 
     elif string[j] =='R': 
      cnt.append('R') 
    if string[0] == 'k': 
     cnt.append('k') 
    elif string[0] == 'R': 
     cnt.append('R') 
    print cnt.count('R') 

вы были более пишущей строка каждый раз, когда вы получаете необработанный ввод, но здесь я просто добавьте каждый вход в список обрабатывается по одному за раз.

FYI - Следующий код будет делать работу лучше

N = int(raw_input()) 
s = [] 
for i in range(N): 
    s.append(raw_input()) 
for string in s: 
    print len(filter(lambda x: x in ("R","K"), string)) 
+0

@akshaysingh, если этот ответ поможет вам рассмотреть возможность его принятия – k4vin

Смежные вопросы