Проблемы с CS50 - PSet7 дома представления - PullRequest
0 голосов
/ 29 апреля 2020

Я написал код для домов, как import.py, так и roster.py, и когда я тестирую их самостоятельно, они оба работают и выдают именно то, что ожидает спецификация. У меня возникают проблемы, когда я отправляю его, хотя мой код работает на моем конце, он все еще говорит мне на check50 (когда я его отправляю), что import.py вообще не выводит ничего. Я приложил результаты проверки 50, чтобы показать, что она говорит.

Спасибо

Результаты проверки 50

IMPORT.PY

import csv
import sys
from cs50 import SQL

if len(sys.argv) != 2:
    print("Usage: python import.py characters.csv")
    sys.exit(1)

db = SQL("sqlite:///students.db")

with open(sys.argv[1], "r") as characters:

    reader = csv.DictReader(characters, delimiter=",")

    for row in reader:

        name = row["name"]
        name_list = name.split()

        if len(name_list) == 2:
            first_name = name_list[0]
            last_name = name_list[1]
            db.execute("INSERT INTO students (first, middle, last, house, birth) VALUES(?, ?, ?, ?, ?)",
                       first_name, None, last_name, row["house"], row["birth"])
        elif len(name_list) == 3:
            first_name = name_list[0]
            middle_name = name_list[1]
            last_name = name_list[2]
            db.execute("INSERT INTO students (first, middle, last, house, birth) VALUES(?, ?, ?, ?, ?)",
                       first_name, middle_name, last_name, row["house"], row["birth"])

ROSTER.PY

import csv
import sys
from cs50 import SQL

if len(sys.argv) != 2:
    if sys.argv[1] != "Gryffindor" or sys.argv[1] != "Slytherin" or sys.argv[1] != "Hufflepuff" or sys.argv[1] != "Ravenclaw":
        print("Usage: python roster.py house")

db = SQL("sqlite:///students.db")

house_list = db.execute("SELECT first, middle, last, birth FROM students WHERE house = (?) ORDER BY last, first", sys.argv[1])

for row in house_list:
    if row["middle"] == None:
        print(row["first"] + " " + row["last"] + ", born " + str(row["birth"]))
    else:
        print(row["first"] + " " + row["middle"] + " " + row["last"] + ", born " + str(row["birth"]))

1 Ответ

1 голос
/ 30 апреля 2020

Извинения за пропущенную проблему в первом go раунде. Когда запускается check50, в файле Students.db уже есть таблица students, поэтому оператор CREATE не выполняется. Может быть, это слишком pedanti c, но spe c не имеет инструкции для создания таблицы. Как и для всех psets в этом курсе, нужно делать и делать только то, что говорит spe c.

...