繁体   English   中英

Python:如何在 function 中打印元组的单个元素

[英]Python : How to print individual element of Tuple in print function

我的代码:

def askTestScores():
   test1 = int(input("Enter test 1 score: "))
   test2 = int(input("Enter test 2 score: "))
   test3 = int(input("Enter test 3 score: "))
   test4 = int(input("Enter test 4 score: "))
   test5 = int(input("Enter test 5 score: "))

   testScores = (test1,test2,test3,test4,test5)

   return testScores



def determine_grade(testScores):
   for i in range(testScores):

      if i >= 90 and i <= 100:
         return "A"
      elif i >= 80 and i <= 89:
         return "B"
      elif i >= 70 and i <= 79:
         return "C"
      elif i >= 60 and i <= 69:
         return "D"
      else:
         return "F"



 def displayGrades(testScores): 

   print("Score\t\t Grade")
   print("-----------------------")
   print(f"{testScores[0]}\t\t {determine_grade(testScores[0])}")
   print(f"{testScores[1]}\t\t {determine_grade(testScores[1])}")
   print(f"{testScores[2]}\t\t {determine_grade(testScores[2])}")
   print(f"{testScores[3]}\t\t {determine_grade(testScores[3])}")
   print(f"{testScores[4]}\t\t {determine_grade(testScores[4])}")

x = askTestScore
displayGrades(x)

当我在 determine_grade function 的循环中使用范围 function 时,这仅打印“F”。我想要的是,单独打印每个等级,但是当我删除范围 function 时,我收到类型错误:说 int object 不可迭代。 我该如何解决这个问题?

而不是 range() 使用:

for i in testscores :

为什么需要for in determine_grades 我想你的意思是这个

def determine_grades(testScore):
    if testScore >= 90 and testScore <= 100:
         return "A"
    elif testScore >= 80 and testScore <= 89:
         return "B"
    elif testScore >= 70 and testScore <= 79:
         return "C"
    elif testScore >= 60 and testScore <= 69:
         return "D"
    else:
         return "F"

def displayGrades(testScores): 

   print("Score\t\t Grade")
   print("-----------------------")
   for testScore in testScores:
       print(f"{testScore}\t\t {determine_grades(testScore)}")

在这里,您在displayGrades中循环testScores以一次传递一个分数以determine_grade _grade 并打印它们。

因为如果您在determine_grades中使用for循环,那么您需要返回成绩列表而不是String

您可以通过将输入附加到list而不是tuple来改进代码

def askTestScores():
    testScores = []

    for i in range(5):
        score = int(input(f"Enter test {i + 1} score: "))
        testScores.append(score)

    return testScores

编辑:如果你需要元组,你可以将list转换为tuple

def askTestScores():
    testScores = []

    for i in range(5):
        score = int(input(f"Enter test {i + 1} score: "))
        testScores.append(score)

    testScores = tuple(testScores)
    return testScores

最简单的方法是将元组的每一项都包含在列表中并删除范围 function:

def askTestScores():
   test1 = int(input("Enter test 1 score: "))
   test2 = int(input("Enter test 2 score: "))
   test3 = int(input("Enter test 3 score: "))
   test4 = int(input("Enter test 4 score: "))
   test5 = int(input("Enter test 5 score: "))

   testscores = ([test1],[test2],[test3],[test4],[test5])

   return testscores



def determine_grade(testscores):
    for i in testscores:
        if i >= 90 and i <= 100:
            return "A"
        elif i >= 80 and i <= 89:
            return "B"
        elif i >= 70 and i <= 79:
            return "C"
        elif i >= 60 and i <= 69:
            return "D"
        else:
            return "F"



def displayGrades(testscores):
     print("Score\t\t Grade")
     print("-----------------------")
     print(f"{testscores[0]}\t\t {determine_grade(testscores[0])}")
     print(f"{testscores[1]}\t\t {determine_grade(testscores[1])}")
     print(f"{testscores[2]}\t\t {determine_grade(testscores[2])}")
     print(f"{testscores[3]}\t\t {determine_grade(testscores[3])}")
     print(f"{testscores[4]}\t\t {determine_grade(testscores[4])}")

x = askTestScores()
displayGrades(x)
displayGrades(x)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM