【问题标题】:Python: if statement prints a particular variablePython:if 语句打印特定变量
【发布时间】:2018-08-11 07:16:21
【问题描述】:

我正在编写一个 Python 练习,用于计算 3 个学校科目的平均值。计算出平均值后,我希望程序找到少于 70 的科目并打印“你可以改进 'x' 科目”。

我知道我可以这样做并用特定的if statements 写出来

if geometry < 70:
      print("Your geometry could be better")
elif algebra < 70: 
      print("Your algebra could be better")
etc etc

但我想知道是否有更简洁的答案,例如

if geometry or algebra or physics < 70:
      print("Your", variable, "could be better")

我仍处于 Python 的初学者水平,有没有更简单的方法来编写 if 语句并避免那些长列表?

【问题讨论】:

  • 使用字典而不是单独的变量,那会很容易。

标签: python if-statement formatting


【解决方案1】:

将它们存储在字典中:

grades = {'algebra': 57, 'geometry': 82, 'physics': 68}
for subject in grades:
    if grades[subject] < 70:
        print('Your {} could be better'.format(subject))

可以在一行中使用dict.items() 将其压缩为列表理解!

[print("Your {} could be better".format(subject)) for subject, grade in grades.items() if grade < 70]

或同一句子中的多个主题:

grades = {'algebra': 57, 'geometry': 82, 'physics': 68}
subjects = ' and '.join([subject for subject, grade in grades.items() if grade < 70]))
print('Your {} could be better'.format(subjects))

【讨论】:

  • 是的,但为时已晚。
  • 谢谢!我也应该问,如果两个科目低于70,我可以把它改成'几何和物理需要改进'吗?
  • 是的,使用另一个 to_improve 列表,如我的回答所示。
【解决方案2】:
scores = {'geometry': 80, 'algebra': 85, 'physics': 68, 'chemistry': 50, 'biology': 69 }

to_improve = []
for subject, score in scores.items():
   if score < 70:
      to_improve.append(subject)
print ('Your', ' and '.join(to_improve), 'could be better')

【讨论】:

    【解决方案3】:
    >>> subjects = {
    ...     'geometry': 80,
    ...     'algebra': 85,
    ...     'physics': 68
    ... }
    ... for subject, score in subjects.items():
    ...     if score < 70:
    ...         print('Your {} could be better'.format(subject))
    ... 
    Your physics could be better
    

    【讨论】:

    • 这是一个相当琐碎的问题(&答案),但答案至少是完美编码的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 2017-10-21
    • 2021-11-07
    • 2013-10-26
    相关资源
    最近更新 更多