【问题标题】:Python input, ifstatement, returnPython输入,if语句,返回
【发布时间】:2013-10-05 21:00:07
【问题描述】:

我必须创建一个接受输入并返回相应成绩的函数。

例如,如果用户输入 A+ 输出为 90% 或者 如果输入是 A 输出是 80% 或者 如果输入是B,输出是70%

我有一些关于如何做到这一点的想法......但是我无法解决如何返回声明的问题?

定义百分比(百分比):

if ( percentage )== A+
return ("90%")
elif (percentage)== A
return ("80%")

这是正确的做法吗?

【问题讨论】:

  • 您好,还有一个问题!如果有人输入值 91 或 89 怎么办...我希望程序为所有高于 90 的值提供 A+...那么这个代码字也会用于这样的函数吗?

标签: if-statement python-3.x return-value


【解决方案1】:

好的,首先,欢迎使用 Python。其次,这是 Pythonic 的做法——定义一个字典:

grades = {'A+': "90%", 'A': "80%", ...}

然后

return grades[precentage]

会做的。

您需要防止成绩不在字典中的情况,例如,如果用户输入了一些错误,例如 G。有几种方法可以解决这个问题:

一个简单的如果:

if precentage in grades:
    return grades[precentage]
else:
    return "bad precentage"

在你习惯了 Python 之后,你会对你的代码更有美感,并且会想要做得更好,而不是陈述两倍的等级和百分比,所以你可以简单地做:

return grades.get(precentage, "bad precentage")

或者使用带有默认值的特殊字典:

import collections
grades = collections.defaultdict(lambda: "bad precentage", [("A+", "90%"), ("A", "80%")])

然后

grades[precentage]

输入错误时会自动返回“bad precentage”。

【讨论】:

  • 您好!感谢朋友的所有帮助!!
  • 您好,还有一个问题!如果有人输入值 91 或 89 怎么办...我希望程序为所有高于 90 的值提供 A+...那么这个代码字也适用于这样的函数吗?
【解决方案2】:

@user2829744 您不希望根据百分比重复调用 if 语句,这会使代码不必要地冗长。

相反,您希望有一个列表或元组(一个存储多个元素的变量),程序可以将用户输入的值与之进行比较,然后计算百分比标记。

以此为例:

def percentage(per):

 grades=["A+","A","B","C","D","E","F"]
 percentage=("90%","80%","70%","60%","50%","40%","30%")
 for i in range(7):
  if per.upper()==grades[i]:
   return percentage[i]

d="a"
print(percentage(d))

发生的情况是i 计数到第七个,如果i 在等级中的值(假设i 是5,那么这将是等级[5],这将是一个“E ") 然后函数返回百分比元组中i 的值。在我的例子中,解释器输出 80%

从逻辑上讲,您的处理方式(通过在单独的 if 语句中实际处理可能的每个等级)也可以,但是就像我说的那样,您的代码会更长,并且您可能会在此过程中犯一些错字你必须编辑。当然,我的代码也有一些问题,比如如果用户输入了我在元组中没有的成绩怎么办。这很容易解决,因为您只需要告诉解释器如果发生这种情况该怎么做。

我知道的有点简短,但我希望这会有所帮助

【讨论】:

    【解决方案3】:

    你可以这样做

        user_input = int(input("percentage:  ")
        if user_input < 0 and user_input > 10:
             print('F")
    

    然后您可以复制代码并更改数字和返回等级 希望对你有帮助:)

    【讨论】:

      猜你喜欢
      • 2020-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-16
      • 2016-11-09
      相关资源
      最近更新 更多