2014-02-09 2 views
0
compass=[student.strip() for student in open("compassfeb8.txt",'U')] 
roster=[student.strip() for student in open("feb4py.txt",'U')] 
dropped=False 
for name in compass: 
    if name not in roster: 
     print name 
     dropped=True 

if not dropped: 
    print "Hooray! Nobody dropped." 

Этот код не работает. Тем не менее, делает следующий код:Тот же код, разные переменные, не работает?

roster1=[student.strip() for student in open("jan24py.txt",'U')] 
roster2=[student.strip() for student in open("feb4py.txt",'U')] 
new_students=False 
for name in roster2: 
    if name not in roster1: 
     print name 
     new_students=True 

if not new_students: 
    print "There were no new students." 

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

Второй блок кода проверяет, есть ли у нас новые ученики.

Это довольно неловко, но я не могу понять, как отступать при вставке моего кода. (Я изучаю HTML в ближайшие недели.) Но я считаю, что все мои отступы верны.

+1

Привет, и добро пожаловать в переполнение стека. Существует огромное количество информации, доступной в верхней части окна сообщения, когда вы создаете ее, чтобы помочь вам в форматировании. Для форматирования кода просто выделите его кнопкой '{}'; нет необходимости добавлять грузы '
' самостоятельно. – Ben

+1

Вы не сравниваете яблоки с яблоками здесь; у вас есть файл в вашем первом, нерабочем примере, который отсутствует в вашем втором рабочем примере. – Makoto

+0

Это не совсем тот же код. 'roster' в вашем первом примере и' roster2' в вашей секунде используются по-другому ... вместо этого вы используете 'compass' в своем первом. – Ben

ответ

1

Вы не только изменили имена переменных, но также изменили вложенность операторов. Переверните имена переменных в операциях for и if на том, что не работает.

+0

Что значит «перевернуть» их? Они - одна и та же переменная ... – jayohday

+0

@ user2809707: Erm, no. Один из них - «компас», другой - «список». –

+0

Я думал, ты говоришь о «имени». Разве это тоже не переменная? – jayohday

0

Вы можете попробовать что-то вроде этого. Создайте имена как заданные, а затем воспользуйтесь функцией set.difference, чтобы найти новых студентов с ограниченными возможностями.

compass={student.strip() for student in open("compassfeb8.txt",'U')} 
roster={student.strip() for student in open("feb4py.txt",'U')} 

dropped_students = compass.difference(roster) 

if not dropped_students: 
    print "Hooray! Nobody dropped." 

roster1={student.strip() for student in open("jan24py.txt",'U')} 
# roster2={student.strip() for student in open("feb4py.txt",'U')} 
roster2 = roster 

new_students = roster2.difference(roster1) 

if not new_students: 
    print "There were no new students." 
+0

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

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