CS50 的问题 - PSet7 房屋提交
Problems with CS50 - PSet7 Houses Submission
我已经为 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"]))
很抱歉错过了第一轮的问题。当 check50
运行时 students.db 中已经有一个 students
table,因此 CREATE 语句失败。也许它太迂腐了,但是规范没有创建 table 的说明。与本课程中的所有 pset 一样,人们应该并且只按照规范所说的去做。
我已经为 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"]))
很抱歉错过了第一轮的问题。当 check50
运行时 students.db 中已经有一个 students
table,因此 CREATE 语句失败。也许它太迂腐了,但是规范没有创建 table 的说明。与本课程中的所有 pset 一样,人们应该并且只按照规范所说的去做。