#python #for-loop #split
#python #for-цикл #разделение
Вопрос:
Предполагается, что код принимает строку из нескольких аргументов и разделяет их с помощью «Split ()». Он делает это, но передает только первый аргумент в «Контрольный список ()». Поэтому, если я наберу «1 2 4», он передаст только «1» в контрольный список. Все остальное работает так, как должно.
import re
def CheckList(Start):
DoIt = 0
s = int(Start)
End = s 1
End = str(End)
for PodCheck in F.readlines():
if re.match('Pod' End, PodCheck.strip()):
DoIt = 0
if re.match('Pod' Start, PodCheck.strip()):
DoIt = 1
if DoIt == 1:
print PodCheck,
return
def Split(P):
Pods = P.split()
for Pod in Pods:
CheckList(Pod)
return
F = open("C:UsersUserDesktopIP_List.txt")
Pod = raw_input('What pod number would you like to check?: ')
Split(Pod.strip())
print 'Done'
Комментарии:
1. Откуда вы знаете, что он передает только первый аргумент, а не просто пропускает данные во время
for PodCheck in...
?2. Именно в этом я и полагал ошибку. Оказывается, я был очень неправ.
Ответ №1:
Ваша проблема прямо здесь:
for PodCheck in F.readlines():
Первый вызов CheckList
использует все данные F
. Последующие вызовы Checklist
пропускают for
цикл, потому что читать больше нечего.
Поэтому после открытия F
вы должны прочитать все свои данные. Не меняя слишком много вашего кода, я бы добавил это после того, как вы откроете свой файл:
F_lines = F.readlines()
И измените цикл на CheckList
for PodCheck in F_lines:
Комментарии:
1. Вы герой, сэр. Спасибо!
2. Проблема заключалась в том, что вы сказали. Чтобы исправить это, я открыл и закрыл файл в CheckList().