如何在Python中创建表

时间:2015-11-01 00:35:38

标签: python function python-3.x tabstop

我以前发过这个帖子,但是我将它与更详细的信息重新发布。

这是我的任务: enter image description here

enter image description here

到目前为止,这是我的代码:

# Define a function that caculates average test scores
def calculate_average(score1, score2, score3, score4, score5):
    total = score1 + score2 + score3 + score4 + score5
    average = total % 5
    print(average)

# Define a function that determines a letter grade
# Based on the given score
def determine_grade(score):
    if score < 60:
        print 'F'
    elif score => 60 or score <= 69:
        print 'D'
    elif score => 70 or score <= 79:
        print 'C'
    elif score => 80 or score <= 89:
        print 'B'
    elif score => 90 or score <= 100:
        print 'A'
# Define a function that prompts the user to input names and test scores
def input_data():
    score1 = input('Enter score 1:')
    name1 = input('Enter name 1:')
    score2 = input('Enter score 2:')
    name2 = input('Enter name 2:')
    score3 = input('Enter score 3:')
    name3 = input('Enter name 3:')
    score4 = input('Enter score 4:')
    name4 = input('Enter name 4:')
    score5 = input('Enter score 5:')
    name5 = input('Enter name 5:')


# Define a function that displays a letter grade for each score
# followed by the student's name and the average test score
def display_menu():

正如我在第一篇文章中所说,除了设置该表之外,我没有任何实际问题。我真的很困惑!

我问我的导师(这是一个在线课程,BTW),他说:“它只是使用打印操作符,就像你在之前的模块中所做的那样,打印文本,变量和函数的返回值。 “

现在我只是想知道从哪里开始。

编辑:我已经更新了我的代码:

# Define a function that prompts the user to input names and test scores
def input_data():
    score1 = input('Enter score 1:')
    name1 = input('Enter name 1:')
    score2 = input('Enter score 2:')
    name2 = input('Enter name 2:')
    score3 = input('Enter score 3:')
    name3 = input('Enter name 3:')
    score4 = input('Enter score 4:')
    name4 = input('Enter name 4:')
    score5 = input('Enter score 5:')
    name5 = input('Enter name 5:')

# Define a function that determines a letter grade
# Based on the given score
def determine_grade(score):
    if score < 60:
        print ('F')
    elif 60 <= score <= 69:
        print ('D')
    elif  70 <= score <= 79:
        print ('C')
    elif 80 <= score <= 89:
        print ('B')
    elif 90 <= score <= 100:
        print ('A')

# Define a function that caculates average test scores
def calculate_average(score1, score2, score3, score4, score5):
    total = score1 + score2 + score3 + score4 + score5
    average = total / 5
    print(average)

# Define a function that displays a letter grade for each score
# followed by the student's name and the average test score
def display_menu():
    for x in range(10):
        print("{:<10}".format("{:0.1f}".format(x)), end='')
    print ("Name\t\t\tnumeric grade\t\tletter grade")
print ("---------------------------------------------------------------")
print ("%s:\t\t\t%f\t\t%s") % ('name1', 'score1', determine_grade)
print ("%s:\t\t\t%f\t\t%s") % ('name2', 'score2', determine_grade)
print ("%s:\t\t\t%f\t\t%s") % ('name3', 'score3', determine_grade)
print ("%s:\t\t\t%f\t\t%s") % ('name4', 'score4', determine_grade)
print ("%s:\t\t\t%f\t\t%s") % ('name5', 'score5', determine_grade)
print ("---------------------------------------------------------------")

但是当我运行它时: enter image description here

编辑#2:这是我目前的代码:

# Define a function that prompts the user to input names and test scores
def input_data():
    score1 = input('Enter score 1:')
    name1 = input('Enter name 1:')
    score2 = input('Enter score 2:')
    name2 = input('Enter name 2:')
    score3 = input('Enter score 3:')
    name3 = input('Enter name 3:')
    score4 = input('Enter score 4:')
    name4 = input('Enter name 4:')
    score5 = input('Enter score 5:')
    name5 = input('Enter name 5:')

# Define a function that caculates average test scores
def calculate_average(score1, score2, score3, score4, score5):
    total = score1 + score2 + score3 + score4 + score5
    average = total / 5
    print(average)

# Define a function that determines a letter grade
# Based on the given score
def determine_grade(score):
    if score < 60:
        print ('F')
    elif 60 <= score <= 69:
        print ('D')
    elif  70 <= score <= 79:
        print ('C')
    elif 80 <= score <= 89:
        print ('B')
    elif 90 <= score <= 100:
        print ('A')



# Define a function that displays a letter grade for each score
# followed by the student's name and the average test score
def display_menu():
   print ("Name\t\t\tnumeric grade\t\tlettergrade")
print ("---------------------------------------------------------------")
print ("%s:\t\t\t%f\t\t%s" % ('name1', 93, 'A'))
print ("%s:\t\t\t%f\t\t%s" % ('name2', 89, 'B'))
print ("%s:\t\t\t%f\t\t%s" % ('name3', 76, 'C'))
print ("%s:\t\t\t%f\t\t%s" % ('name4', 58, 'F'))
print ("%s:\t\t\t%f\t\t%s" % ('name5', 98, 'A'))
print ("---------------------------------------------------------------")
print (calculate_average)

当我运行它时会发生这种情况:

enter image description here

现在,我主要有两个问题:

1)如何在显示表之前获取输入语句并输入数据?

2)如何转换显示的数字以使它们采用“.2f”格式? (我已经尝试了几种方法,但没有一种方法有效)。

绝对是最终编辑:我非常接近解决方案,但需要更多帮助。

这是我的代码:

# Define a function that prompts the user to input names and test scores

score = input('Enter score 1:')
name1 = input('Enter name 1:')
score = input('Enter score 2:')
name2 = input('Enter name 2:')
score = input('Enter score 3:')
name3 = input('Enter name 3:')
score = input('Enter score 4:')
name4 = input('Enter name 4:')
score = input('Enter score 5:')
name5 = input('Enter name 5:')




# Define a function that determines a letter grade
# Based on the given score
def determine_grade(score):
    if score < 60:
        print ('F')
    elif 60 <= score <= 69:
        print ('D')
    elif  70 <= score <= 79:
        print ('C')
    elif 80 <= score <= 89:
        print ('B')
    elif 90 <= score <= 100:
        print ('A')

determine_grade(score)


# Define a function that caculates average test scores
def calculate_average(score):
    total = score + score + score + score + score
    average = total / 5
    print(average)

calculate_average(score)

# Define a function that displays a letter grade for each score
# followed by the student's name and the average test score
def display_menu():
   print ("Name\t\t\tnumeric grade\t\tlettergrade")
print ("---------------------------------------------------------------")
print ("%s:\t\t\t%f\t\t%s" % ('name1', 'score', determine_grade('score')))
print ("%s:\t\t\t%f\t\t%s" % ('name2', 'score', determine_grade('score')))
print ("%s:\t\t\t%f\t\t%s" % ('name3', 'score', determine_grade('score')))
print ("%s:\t\t\t%f\t\t%s" % ('name4', 'score', determine_grade('score')))
print ("%s:\t\t\t%f\t\t%s" % ('name5', 'score', determine_grade('score')))
print ("---------------------------------------------------------------")
calculate_average(score)

当我按下F5时会发生这种情况:

enter image description here

GUYS,我几乎已经完成了帮助格式化: 我创建了另一个文件,所以我可以重新组织我的代码,这就是为什么没有评论。这就是我所拥有的:

score1 = float(input('Enter score 1:'))
name1 = input('Enter name 1:')
score2 = float(input('Enter score 2:'))
name2 = input('Enter name 2:')
score3 = float(input('Enter score 3:'))
name3 = input('Enter name 3:')
score4 = float(input('Enter score 4:'))
name4 = input('Enter name 4:')
score5 = float(input('Enter score 5:'))
name5 = input('Enter name 5:')


def determine_letter_grade1(score1):
    if score1 < 60.0:
        print ('F')
    elif 60.0 <= score1 <= 69.0:
        print ('D')
    elif  70.0 <= score1 <= 79.0:
        print ('C')
    elif 80.0 <= score1 <= 89.0:
        print ('B')
    elif 90.0 <= score1 <= 100.0:
        print ('A')

def determine_letter_grade2(score2):
    if score2 < 60.0:
        print ('F')
    elif 60.0 <= score2 <= 69.0:
        print ('D')
    elif  70.0 <= score2 <= 79.0:
        print ('C')
    elif 80.0 <= score2 <= 89.0:
        print ('B')
    elif 90.0 <= score2 <= 100.0:
        print ('A')

def determine_letter_grade3(score3):
    if score3 < 60.0:
        print ('F')
    elif 60.0 <= score3 <= 69.0:
        print ('D')
    elif  70.0 <= score3 <= 79.0:
        print ('C')
    elif 80.0 <= score3 <= 89.0:
        print ('B')
    elif 90.0 <= score3 <= 100.0:
        print ('A')

def determine_letter_grade4(score4):
    if score4 < 60.0:
        print ('F')
    elif 60.0 <= score4 <= 69.0:
        print ('D')
    elif  70.0 <= score4 <= 79.0:
        print ('C')
    elif 80.0 <= score4 <= 89.0:
        print ('B')
    elif 90.0 <= score4 <= 100.0:
        print ('A')

def determine_letter_grade5(score5):
    if score5 < 60.0:
        print ('F')
    elif 60.0 <= score5 <= 69.0:
        print ('D')
    elif  70.0 <= score5 <= 79.0:
        print ('C')
    elif 80.0 <= score5 <= 89.0:
        print ('B')
    elif 90.0 <= score5 <= 100.0:
        print ('A')

average = (score1 + score2 + score3 + score4 + score5) / 5.0

def determine_letter_grade_avg(average):
    if average < 60.0:
        print ('F')
    elif 60.0 <= average <= 69.0:
        print ('D')
    elif  70.0 <= average <= 79.0:
        print ('C')
    elif 80.0 <= average <= 89.0:
        print ('B')
    elif 90.0 <= average <= 100.0:
        print ('A')

def display_menu():
    for x in range(10):
        print("{:<10}".format("{:0.1f}".format(x)), end='')
    print ("Name\t\t\tnumeric grade\t\tletter grade")
print ("---------------------------------------------------------------")
print ("%s:\t\t\t%f\t\t%s" % (name1, score1, determine_letter_grade1(score1)))
print ("%s:\t\t\t%f\t\t%s" % (name2, score2, determine_letter_grade2(score2)))
print ("%s:\t\t\t%f\t\t%s" % (name3, score3, determine_letter_grade3(score3)))
print ("%s:\t\t\t%f\t\t%s" % (name4, score4, determine_letter_grade4(score4)))
print ("%s:\t\t\t%f\t\t%s" % (name5, score5, determine_letter_grade5(score5)))
print ("---------------------------------------------------------------")
print ('Average Score:', average, determine_letter_grade_avg(average))

当我运行它时:

enter image description here

3 个答案:

答案 0 :(得分:1)

您应该关注end=''for x in range(10): print("{:<10}".format("{:0.1f}".format(x)), end='') 了解您的打印声明

这是一个小例子

"{:0.1f}".format(x)

浮点值舍入到小数点后1位的第一部分是

0

.1f表示没有左侧填充,以下"{:<10}".format(...) 用于舍入到小数点后1位。接下来是主要部分

Hello

这将打印最小字符串长度为10个字符。因此,如果您有Hello_____之类的字符串,则会将其打印为10(_表示空格)end=''可以更改为您选择的值。

最后是end。默认情况下,\n参数为end='\n',这是每次打印后创建新行的参数,但通过更改它,您可以从多个打印语句中形成行。只需正常打印或在想要结束该行时设置and

还有一点需要注意。检查值是否在两个整数之间时,您可以使用此值而不是两次检查(也需要or运算符而不是elif 60 <= score <= 69:

>>> f = open("file.txt", "r+b")
>>> f.seek(2)
>>> f.write("sdf")
>>> f.seek(0)
>>> f.read()
'sdsdf'


>>> f = open("file.txt", "r+b")
>>> f.read(1)
's'
>>> f.read(1)
'd'
>>> f.write("sdf")
>>> f.seek(0)
>>> f.read()
'sdfsdf'

答案 1 :(得分:1)

你可以这样做:

def display_menu():
print "Name\t\t\tnumeric grade\t\tlettergrade"
print "---------------------------------------------------------------"
print "%s:\t\t\t%f\t\t%s" % ('name1', 50, 'F')
print "%s:\t\t\t%f\t\t%s" % ('name2', 50, 'F')
print "%s:\t\t\t%f\t\t%s" % ('name3', 23, 'F')
print "%s:\t\t\t%f\t\t%s" % ('name4', 44, 'F')
print "%s:\t\t\t%f\t\t%s" % ('name5', 48, 'F')
print "---------------------------------------------------------------"

display_menu()

我使用\t在两者之间添加标签。

This is the screenshot of the PythonShell Output

答案 2 :(得分:0)

好吧,我刚刚得到了解决方案,我对代码进行了真正的屠杀。但是,我会发布这个,所以没有人会像我一样受苦:

# main function
    def main():
        # Local variables only have to define floats
        average = 0.0
        score1 = 0.0
        score2 = 0.0
        score3 = 0.0
        score4 = 0.0
        score5 = 0.0

        # Get scores
        score1 = float(input('Enter score 1:'))
        name1  = input('Enter name 1:')
        score2 = float(input('Enter score 2:'))
        name2  = input('Enter name 2:')
        score3 = float(input('Enter score 3:'))
        name3  = input('Enter name 3:')
        score4 = float(input('Enter score 4:'))
        name4  = input('Enter name  4:')
        score5 = float(input('Enter score 5:'))
        name5  = input('Enter name 5:')

        # Calculate average grade
        average = calculate_average(score1, score2, score3, score4, score5)

        #Display grade and average information in tabular form
        print('Name\t\tnumeric grade\tletter grade')
        print('----------------------------------------------------')
        print(name1 + ':\t\t', score1, '\t\t', determine_grade(score1))
        print(name2 + ':\t\t', score2, '\t\t', determine_grade(score2))
        print(name3 + ':\t\t', score3, '\t\t', determine_grade(score3))
        print(name4 + ':\t\t', score4, '\t\t', determine_grade(score4))
        print(name5 + ':\t\t', score5, '\t\t', determine_grade(score5))
        print('----------------------------------------------------')
        print ('Average score:\t', average, '\t\t', \
               determine_grade(average))

    # The calc_average function returns average of 5 grades 
    def calculate_average(s1, s2, s3, s4, s5):
        return  (s1 + s2 + s3 + s4 + s5) / 5.0

    # The determine_grade function receives a numeric  
    # grade and returns the corresponding letter grade 
    def determine_grade(score):
        if score >= 90:
            return 'A'
        elif score >= 80:
            return 'B'
        elif score >= 70:
            return 'C'
        elif score >= 60:
            return 'D'
        else:
            return 'F'

    # Call the main function.
    main()