Перехват ошибок, когда пользователь вводит неверную информацию - PullRequest
0 голосов
/ 04 июня 2009

Итак, я недавно начал изучать Python ... Я пишу небольшой скрипт, который извлекает информацию из CSV, и мне нужно иметь возможность уведомить пользователя о неправильном вводе

например

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

Я посмотрел в операторы def, но я не могу понять весь синтаксис в python .... (я не знаю все команды ... параметры и прочее)

любая помощь будет очень признательна = D

while True: 
    import csv 
    DATE, ROOM, COURSE, STAGE = range (4) 
    csv_in = open("roombookings.csv", "rb") 
    reader = csv.reader (csv_in) 
    data = [] 
    for row in reader: 
        data.append(row) 
    roomlist = raw_input ("Enter the room number: ") 
    print "The room you have specified has the following courses running: " 
    for sub_list in data: 
        if sub_list[ROOM] == roomlist: 
            Date, Room, Course, Stage = sub_list 
            print Date, Course

Ответы [ 2 ]

1 голос
/ 04 июня 2009

Серьезно, прочитайте учебник. Официальный довольно хорош. Мне также нравится эта книга для начинающих.

import csv

while True:
    id_number = raw_input('(enter to quit) ID number:')

    if not id_number:
        break

    # open the csv file
    csvfile = csv.reader(open('file.csv'))
    for row in csvfile:
        # for this simple example I assume that the first column 
        # on the csv is the ID:
        if row[0] == id_number:
            print "Found. Here's the data:", row
            break
    else:
        print "ID not found, try again!"

EDIT Теперь, когда вы добавили код, я обновляю пример:

import csv
DATE, ROOM, COURSE, STAGE = range(4) 

while True: 
    csv_in = open("roombookings.csv", "rb") 
    reader = csv.reader(csv_in) 
    roomlist = raw_input("(Enter to quit) Room number: ") 
    if not roomlist:
        break
    print "The room you have specified has the following courses running: " 
    for sub_list in reader: 
        if sub_list[ROOM] == roomlist: 
            print sub_list[DATE], sub_list[COURSE]
1 голос
/ 04 июня 2009

Я не уверен, что вы просите, но если вы хотите проверить, правильно ли пользователь ввел идентификатор, вам следует попробовать регулярные выражения. Посмотрите на Документацию Python для модуля re . Или спросите в гугле "python re"

Вот пример, который проверит ввод пользователя:

import re

id_patt = re.compile(r'^r[1-5]$')
def checkId(id):
    if id_patt.match(id):
        return True
    return False

HTH, привет.

РЕДАКТИРОВАТЬ: я прочитал ваш вопрос снова, вот еще немного кода: (просто вставьте его ниже предыдущего фрагмента кода)

validId = False
while not validId:
    id = raw_input("Enter id: ")
    validId = checkId(id)

Кстати, он может быть написан более коротким способом, но этот фрагмент кода должен быть проще для понимания новичком в Python.

...