仅 CSV 文件写入 Headers

CSV File Writing Only Headers

我正在尝试编写一个 CSV 文件,该文件采用随机名称、分数、字母等级并生成一个 CSV 文件。当我 运行 它在 PyCharm 上时,我确实创建了那个,但是当我检查它生成的 CSV 文件时,它是空的,除了 headers。

import random
import csv
fname = ['Red','Jose','Mikasa','Sakura','Naruto','Momoka','Zero','Ryu','Ken','Geralt','Greg','Mika','Momo','Xenovia','John','Gary','Lance','Eren','Duke','Claire']
lname = ['Akerman','Haruno','Johnson','Rivia','Valentine','Redfield','Kennedy','Juarez','Jameson','Williams','Miller','Davis','Thompson','Garcia','Remington','Hayabusa','Strife','Armstrong','Kojima','Chambers']
grade = ['A','B','C','D','F']
def ranint():
    value = random.randint(60, 100)
    print(value)
def ranname():
    first = random.choice(fname)
    last = random.choice(lname)
    print(first,last)
    fname.remove(first)
    lname.remove(last)
def rangrade():
    fgrade = random.choice(grade)
    print(fgrade)

with open('grades.csv','w',newline='') as fp:
    a = csv.writer(fp,delimiter=',')
    data = [['Name', 'Assignment1', 'Assignment2', 'Assignment3', 'Assignment4', 'Quiz1', 'Quiz2', 'Quiz3', 'Quiz4', 'Total_Grade'],
        [ranname(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), rangrade()],
        [ranname(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), rangrade()],
        [ranname(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), rangrade()],
        [ranname(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), rangrade()],
        [ranname(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), rangrade()],
        [ranname(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), rangrade()],
        [ranname(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), rangrade()],
        [ranname(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), rangrade()],
        [ranname(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), rangrade()],
        [ranname(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), rangrade()],
        [ranname(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), rangrade()],
        [ranname(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), rangrade()],
        [ranname(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), rangrade()],
        [ranname(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), rangrade()],
        [ranname(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), rangrade()],
        [ranname(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), rangrade()],
        [ranname(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), rangrade()],
        [ranname(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), rangrade()],
        [ranname(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), rangrade()],
        [ranname(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), rangrade()]]
    a.writerows(data)

你的函数不return任何东西,它们只是打印随机值。在每个函数的末尾添加一个 return 语句。在 return 值之前,您必须将 firstlast 结合起来,例如join.

import random
import csv
fname = ['Red','Jose','Mikasa','Sakura','Naruto','Momoka','Zero','Ryu','Ken','Geralt','Greg','Mika','Momo','Xenovia','John','Gary','Lance','Eren','Duke','Claire']
lname = ['Akerman','Haruno','Johnson','Rivia','Valentine','Redfield','Kennedy','Juarez','Jameson','Williams','Miller','Davis','Thompson','Garcia','Remington','Hayabusa','Strife','Armstrong','Kojima','Chambers']
grade = ['A','B','C','D','F']

def ranint():
    value = random.randint(60, 100)
    #print(value)
    return value

def ranname():
    first = random.choice(fname)
    last = random.choice(lname)
    #print(first,last)
    fname.remove(first)
    lname.remove(last)
    return "; ".join([first, last])

def rangrade():
    fgrade = random.choice(grade)
    #print(fgrade)
    return fgrade

with open('grades.csv','w',newline='') as fp:
    a = csv.writer(fp,delimiter=',')
    data = [['Name', 'Assignment1', 'Assignment2', 'Assignment3', 'Assignment4', 'Quiz1', 'Quiz2', 'Quiz3', 'Quiz4', 'Total_Grade'],
        [ranname(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), rangrade()],
        [ranname(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), rangrade()],
        [ranname(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), ranint(), rangrade()]]
    a.writerows(data)

您的函数没有 return 语句。

例如:

def ranname():
    first = random.choice(fname)
    last = random.choice(lname)
    print(first,last)
    fname.remove(first)
    lname.remove(last)

需要像这样:

def ranname():
    first = random.choice(fname)
    last = random.choice(lname)
    print(first,last)
    return (first, last)
    fname.remove(first)
    lname.remove(last)