sql - 房屋 pset7 对我来说工作正常,但在运行 check50 时不起作用
问题描述
我正在处理的 pset 有 2 个部分,这两个部分都适合我。但是,当我通过 check50 运行这些时,我会得到 1/6。这是我应该在 pset 中执行的操作的链接:pset,这些是我得到的错误:errors。
这是我的 import.py 代码:
from cs50 import SQL
from sys import argv, exit
import csv
db = SQL("sqlite:///students.db")
if len(argv) != 2:
print("error")
exit(1)
if argv[1] != "characters.csv":
print("error")
exit(1)
with open(argv[1], "r") as CSVfile:
CSVfile = csv.DictReader(CSVfile, delimiter = ',')
chars = list(CSVfile)
for row in chars:
name = row["name"]
birth = row["birth"]
house = row["house"]
full = name.split( )
if len(full) == 2:
first = full[0]
last = full[1]
db.execute("INSERT INTO students(first, last, house, birth) VALUES(?, ?, ?, ?)", first, last, house, birth)
elif len(full) == 3:
first = full[0]
middle = full[1]
last = full[2]
db.execute("INSERT INTO students(first, middle, last, house, birth) VALUES(?, ?, ?, ?, ?)", first, middle, last, house, birth)
这是我的花名册代码:
from cs50 import SQL
from sys import argv, exit
import csv
if len(argv) != 2:
print("error")
exit(1)
db = SQL("sqlite:///students.db")
results = db.execute("SELECT * FROM students WHERE house = ? ORDER BY last ASC, first ASC", argv[1])
for row in results:
if 'middle' != None:
print(f"{row['first']} {row['middle']} {row['last']}, born {row['birth']}")
else:
print(f"{row['first']} {row['last']}, born {row['birth']}")
我已经和一位导师谈过了,我已经纠正了他提到的错误,所以它们是无关紧要的。提前致谢。
编辑:
我删除了这部分:
if argv[1] != "characters.csv":
print("error")
exit(1)
因为将 csv 文件的名称硬编码到我的代码中是错误的。这改善了很多。但是,我现在在名册上遇到了问题。我的意思是输出是学生的全名和出生年份。有些学生没有中间名,所以我尝试做一个 if 条件来查看这个名字中是否存在“中间”:
if 'middle' != None:
print(f"{row['first']} {row['middle']} {row['last']}, born {row['birth']}")
else:
print(f"{row['first']} {row['last']}, born {row['birth']}")
然而,对于没有中间名的学生,我会得到这样的输入:Lavender None Brown,1979 年出生
解决方案
从规范:
您的程序应该接受 CSV 文件的名称作为命令行参数。
如果提供的命令行参数数量不正确,您的程序应该打印错误并退出。
您可以假设 CSV 文件将存在,并且将具有列名称、房屋和出生。
CSV 文件的名称不应该是硬编码的,因为它在这里if argv[1] != "characters.csv":
但是等等还有更多!(问题编辑后)
这永远if 'middle' != None:
是真的!为什么?因为'middle'
是字符串文字。也许你的意思是row['middle']
?
推荐阅读
- java - 有没有办法使用通用的 Spring Data JPA 存储库实现?
- c++ - 如何明确地将某些模板化输入作为参数?
- reactjs - 完整的日历计划程序与 SharePoint 框架 (REACT)
- flutter - 如何列出所有 Flutter 包和版本号
- validation - 如何在 ionic 4 angular 8 中设置登录验证
- r - 手动将图例添加到重叠的 ggplot2 不起作用
- python - 摆脱时间戳以便将数据插入到 sql 表中
- ios - ld:由于残留的 Firebase 组件,未找到框架 FirebaseAuth 错误
- reactjs - 类型 '{ children?: ReactNode; 上不存在属性 'firebase' }' 如何正确注释?
- c - 指针的行为类似于本地变量,并且没有在函数中保留它的修改