Python raw_input def проблема ввода - PullRequest
1 голос
/ 15 декабря 2009

Я собираюсь опубликовать только часть, где проблема, программа не имеет ошибок (все коды действительны, кроме этой raw_input проблемы)

Я тестировал с search_function(1) и т. Д., И это сработало.

Но если я сделаю это во время цикла, он ничего не печатает. Пример вывода:

Введите число для печати конкретной таблицы, или STOP, чтобы выйти: 2 Введите число для распечатать конкретную таблицу или STOP для выхода: 2 Введите номер для печати конкретного таблицы или STOP, чтобы выйти: 1 Введите номер для печати конкретной таблицы или STOP выйти: введите число для печати конкретная таблица или STOP, чтобы выйти: 1 Введите номер для печати конкретной таблицы, или STOP, чтобы выйти: введите число, чтобы распечатать конкретную таблицу или STOP для выхода: СТОП

def search_function(x):
    if x == 1:
        for student in students:
            print "%-17s|%-10s|%-6s|%3s" % student.print_information()
        print '\n'

    if x == 2:
        print "%-17s|%-10s|%s" %(header[0],header[1],header[4])
        print "-" * 45
        for student in students:
            print "%-17s|%-10s|%s" %student.print_first()
        print '\n'
        print "Simple Analysis on favorite sports: "
        # Printing all sports that are specified by students
        for s in set(Student.sports): # class attribute
            print s, Student.sports.count(s), round(((float(Student.sports.count(s)) / num_students) *100),1)

        # Printing sports that are not picked 
        allsports = ['Basketball','Football','Other','Baseball','Handball','Soccer','Volleyball','I do not like sport']
        for s in set(allsports) - set(Student.sports):
            print s, 0, '0%'
        choice_list = Student.sports
        for choice in choice_list:
            choice_dict[choice] = choice_dict.get(choice, 0) + 1
        print max(choice_dict)
        print min(choice_dict)

    elif x == 3:
        print "%-17|%-10s|%-16s|%s" %(header[0],header[1],header[5],header[6])
        print "-" * 45
        for student in students:
            print "%-17s|%-10s|%-16s|%s" % student.print_second()
        print '\n'

    elif x == 4:
        print "%-17s|%-10s|%s" %(header[0],header[1],header[7])
        print "-" * 45
        for student in students:
            print "%-17s|%-10s|%s" %student.print_third()
        print '\n'

    elif x == 5:
        print "%-17s|%-10s|%-15s|%s" %(header[0],header[1],header[8],header[9])
        print "-" * 45
        for student in students:
            print "%-17s|%-10s|%-16s|%s" % student.print_fourth()
        print '\n'

x = raw_input("Enter a number to print specific table, or STOP to quit: ")
while x != 'STOP':
    search_function(x)
    x = raw_input("Enter a number to print specific table, or STOP to quit: ")

Ответы [ 2 ]

2 голосов
/ 15 декабря 2009

raw_input() возвращает строку, в то время как ваш код ожидает целое число. Используйте search_function(int(x)) или измените условия для сравнения со строками.

1 голос
/ 15 декабря 2009

Сначала проверьте x == 'STOP' и break, если True, иначе приведите к int и вызовите search_function:

while True:
    x = raw_input("Enter a number to print specific table, or STOP to quit: ")
    if x == 'STOP':
        break
    search_function(int(x))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...