Python2.7:raw_input和Math

时间:2014-09-08 17:41:50

标签: python python-2.7

PROGRAM

我试图编写一个代码,根据来自俄罗斯和美国提升者的各种研究的经验数据计算精英级举重运动员的估计疲劳程度。

所有这些计算都是基于举重最重的举重运动员。在训练期间,这并不总是如此容易测试,因为最大努力提升会严重阻碍由于其强度而导致的恢复。因此,程序的一部分必须能够基于单个集合估计一次重复最大值。

问题

'如果'完美回归。所有elif只在*之后打印小数并加载menu()。我尝试过使用float()和int(),但我的编程能力似乎不足。

我也很确定我的写作效率非常低(编码两周)。

def repmax():
clear()
while True:
    print "Weight lifted?\n"
    weight = int(raw_input("> "))
    print "\nRepetitions done?\n"
    reps = int(raw_input("> "))
    print "\n"
    if reps == 1:
        print "Your estimated 1RM is %s.\n" % weight * 1
        menu()
    elif reps == 2:
        print "Your estimated 1RM is %s." % weight * 0,95
        menu()
    elif reps == 3:
        print "Your estimated 1RM is %s." % weight * 0,90
        menu()
    elif reps == 4:
        print "Your estimated 1RM is %s." % weight * 0,88
        menu()
    elif reps == 5:
        print "Your estimated 1RM is %s." % weight * 0,86
        menu()

1 个答案:

答案 0 :(得分:1)

您的浮点数错误,使用小数而不是逗号:

print "Your estimated 1RM is %s." % (weight * 0.95)

请注意,您需要将计算放在括号中;否则python会尝试乘以"Your estimated 1RM is %s." % weight的结果。演示:

>>> "Your estimated 1RM is %s." % (weight * 0.95)
'Your estimated 1RM is 76.0.'

您确实可以在某种程度上优化您的代码;使用列表将重复映射到因子:

reps_to_factor = [1, 0.95, 0.90, 0.88, 0.86]

现在您可以从reps中减去一个并获得正确的因素:

print "Your estimated 1RM is %s.\n" % (weight * reps_to_factor[reps - 1])
menu()

并且不需要if..elif结构。