【问题标题】:Problems with CS50 - PSet7 Houses SubmissionCS50 的问题 - PSet7 房屋提交
【发布时间】:2020-04-29 19:22:17
【问题描述】:

我已经为 import.py 和 roster.py 编写了代码,当我自己测试它们时,它们都可以正常工作并准确输出规范所期望的输出。我遇到麻烦的地方是当我提交它时,即使我的代码在我的最后工作,它仍然在 check50(当我提交它时)告诉我 import.py 根本不产生任何输出。我已附上检查 50 的结果以显示其内容。

谢谢

check50 results

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"]))

【问题讨论】:

  • 这有点奇怪。您是否尝试重新启动 cs50 IDE?您是否仔细检查过您的代码是否有效?
  • 当 import.py 中的数据库与发行版代码中的数据库不匹配时会发生该错误。

标签: python sqlite cs50


【解决方案1】:

很抱歉错过了第一轮的问题。当check50runs 时,students.db 中已经有students 表,因此 CREATE 语句失败。也许它太迂腐了,但规范没有创建表格的说明。与本课程中的所有 pset 一样,一个人应该做并且只做规范所说的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-06
    • 1970-01-01
    • 2021-11-22
    • 2018-07-17
    相关资源
    最近更新 更多