【问题标题】:Python - Get a function to use argument as string and intPython - 获取一个函数以将参数用作字符串和 int
【发布时间】:2015-11-16 00:26:03
【问题描述】:

问题

我希望get_scores 使用tests 并将其用作intx > 0,但能够打印测试。我已经尝试摆弄了一段时间,但我无法得到我想要的。

我尝试过的

我的问题是我希望 get_scores 方法打印“测试加权的百分比”。测试被分配给一个 int 所以它不能打印任何东西,除非我这样做打印一个我不希望它做的 int:

int(input("What percentage are" + str(x) + "weighted?"

我尝试了几种不同的方法,例如:

get_initial_input function (   like this: testsp = get_scores("tests")    )

这使得x > 0 无法处理,因为x 是一个字符串。我也试过了:

int(x) > 0 

...看看它是否像将其更改回 int 一样简单(没用)。

代码

def main():
    tests = get_initial_input("tests")
    assignments = get_initial_input("assignments")
    exercises = get_initial_input("exercises")
    labs = get_initial_input("labs")
    finals = get_initial_input("finals")
    testsp = get_scores(tests)
    assignmentsp = get_scores(assignments)
    exercisesp = get_scores(exercises)
    labsp = get_scores(labs)
    finalsp = get_scores(finals)
def get_initial_input(x):
    val = int(input("How many "+ x + " were there?    "))
    return val

def get_scores(x):
    if x > 0:
            xp = int(input("What percentage are "+ str(x) + " weighted?"))
            return xp

main()

有没有我想要的东西?

提前感谢您的帮助。

【问题讨论】:

  • 也许做一个字典,其中关键是你的测试类型,值是代表权重的整数,可能更容易

标签: python


【解决方案1】:

你可以让get_scores 接受两个参数:一个是一个字符串,给出分配的类型,因此要打印什么,另一个是这样的分配的数量:

def get_scores(x, kind):
    if x > 0:
        xp = int(input("What percentage are "+ kind + " weighted?"))
        return xp

你会这样称呼:

testsp = get_scores(tests, 'tests)

但是编写没有if 的函数可能更有意义,并在调用它之前进行检查

【讨论】:

    【解决方案2】:

    我可能有点困惑,但听起来您正在尝试使用变量tests 同时表示整数值和字符串。你可以把测试变成一个字符串,然后使用字符串索引来得到你想要的:

    tests = ["tests"]
    

    现在您可以使用以下方法将第二个值放入列表中:

    tests.append(get_initial_input(tests))
    

    现在,当您要打印字符串时,只需使用print tests[0],当您要打印测试次数时,请使用print tests[1]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-18
      • 2012-05-25
      • 2023-03-17
      相关资源
      最近更新 更多