【问题标题】:When I run this it outputs 0 for the value "sm"当我运行它时,它为值“sm”输出 0
【发布时间】:2020-05-17 08:51:08
【问题描述】:
print("Please input your values")

strength = input("STRENGTH: ")
dexterity = input ("DEXTERITY: ")
constitution = input("CONSTITUTION: ")
intellegence = input("INTELLEGENCE: ")
wisdom = input("WISDOM: ")
charisma = input("CHARISMA: ")
sm = 0
dxm = 0
cm = 0
im = 0
wm = 0
chm = 0

if strength == 1:
    sm = -5
    return sm
elif strength == 2 or strength == 3:
    sm = -4
    return sm
elif strength == 4 or strength == 5:
    sm = -3
    return sm
elif strength == 6 or strength == 7:
    sm = -2
    return sm
elif strength == 8 or strength == 9:
    sm = -1
    return sm
elif strength == 10 or strength == 11:
    sm = +0
    return sm
elif strength == 12 or strength == 13:
    sm = +1
    return sm
elif strength == 14 or strength == 15:
    sm = +2
    return sm
elif strength == 16 or strength == 17:
    sm = +3
    return sm
elif strength == 18 or strength == 19:
    sm = +4
    return sm
elif strength == 20 or strength == 21:
    sm = +5
    return sm
elif strength == 22 or strength == 23:
    sm = +6
    return sm
elif strength == 24 or strength == 25:
    sm = +7
    return sm
elif strength == 26 or strength == 27:
    sm = +8
    return sm
elif strength == 28 or strength == 29:
    sm = +9
    return sm
elif strength == 30:
    sm = +10
    return sm

print(str(sm))

我不确定为什么打印时代码在值 sm 上输出 0。我已经尝试了很多事情,包括在 def modify(value, modifier): 中缩进 if、elif、elif、elif... 代码,但不幸的是没有奏效。

【问题讨论】:

  • 您的输入是字符串,并且您正在与数值进行比较,等式总是错误的

标签: python


【解决方案1】:

input 返回一个字符串。如果键入 1,strength 的值将变为 "1",它不等于 1

【讨论】:

    【解决方案2】:

    代码应该是这样的

    print("Please input your values")
    
    strength = int(input("STRENGTH: "))
    
    sm = 0
    dxm = 0
    cm = 0
    im = 0
    wm = 0
    chm = 0
    
    if strength == 1:
        sm -= 5
    
    elif strength == 2 or strength == 3:
        sm -= 4
    
    elif strength == 4 or strength == 5:
        sm -= 3
    
    elif strength == 6 or strength == 7:
        sm -= 2
    
    elif strength == 8 or strength == 9:
        sm -= 1
    
    elif strength == 10 or strength == 11:
        sm += 0
    
    elif strength == 12 or strength == 13:
        sm += 1
    
    elif strength == 14 or strength == 15:
        sm += 2
    
    elif strength == 16 or strength == 17:
        sm += 3
    
    elif strength == 18 or strength == 19:
        sm += 4
    
    elif strength == 20 or strength == 21:
        sm += 5
    
    elif strength == 22 or strength == 23:
        sm += 6
    
    elif strength == 24 or strength == 25:
        sm += 7
    
    elif strength == 26 or strength == 27:
        sm += 8
    
    elif strength == 28 or strength == 29:
        sm += 9
    
    elif strength == 30:
        sm += 10
    
    print(str(sm))
    

    您在上传的代码中遇到的问题是
    1)您存储在强度输入中,即str,稍后,您将其与int strength == 1进行比较,因此需要将其转换为int。 2)增加和减少的是= += -,需要是+= and -=。 3) sm 的返回不是必需的,因为您希望最后打印它而不是从函数返回值。

    【讨论】:

      【解决方案3】:

      您的输入是字符串,并且您正在与数值进行比较,等式总是错误的。

      strength == '1' 为例

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-02
        • 2021-10-12
        • 2022-12-24
        • 1970-01-01
        • 1970-01-01
        • 2011-09-20
        • 1970-01-01
        • 2021-05-15
        相关资源
        最近更新 更多