-6
dummy = 10
os.system("cls")
x = input("""You use your attack by chossing a attack,for now you have 3 attacks.
Choose one:
1)punch 3dmg
2)use knife 4dmg
3)use pistol 6dmg
""")
if x == 1:
    dummy = dummy-3
    print"Dummies life:"+str(dummy)
elif x == 2:
    dummy = dummy-4
    print"Dummies life:"+str(dummy)
elif x == 3:
    dummy = dummy-6
    print"Dummies life:"+str(dummy)

x=raw_input("""Attack:
1)punch 3dmg
2)use knife 4dmg
3)use pistol 6dmg
""")

if x == 1:
    dummy = dummy-3
    print"Dummies life:"+str(dummy)
elif x == 2:
    dummy = dummy-4
    print"Dummies life:"+str(dummy)
elif x == 3:
    dummy = dummy-6
    print"Dummies life:"+str(dummy)
if dummy <= 0:
    os.system("cls")
elif dummy >= 0:
    os.system("cls")

    x=raw_input("Finish him write 1,2,3:")
#this is always printing help me#
    if x==1:
        dummy=dymmy-3
    elif x==2:
        dummy=dummy-4
    elif x==3:
        dummy=dummy-6
print"Good job!!!"

为什么总是打印最后一个 if elif 代码?
对不起,我不知道代码的其他部分是否有错误。

4

6 回答 6

2

raw_input()函数从输入(即用户)读取一行,并通过去除尾随换行符返回一个字符串。

所以int == str总是假的。

于 2013-09-01T15:15:23.167 回答
1

我不能对这个问题投反对票,但这很糟糕。我不太确定你在写什么。如果我确实打了两次,我会得到你的第一个条件,如果我在伤害上打破 10 分,我会得到另一个。似乎工作。

可能想在最后一个条件下将 dummy=dymmy-3 更改为 dummy=dummy-3 。

此外,将您的评论放在上面或内联它将要执行的代码而不是它下面。

于 2013-09-01T15:10:46.020 回答
1

这是因为该input()函数需要字符串输入。

使用int()函数将输入转换为 int

或者

if x == '1':
    # your stuffs

elif x == '2':
   # your stuffs

问题是你的最后一个条件:elif >=0因为无论我输入哪个整数,它总是大于 0,不是吗?因此,它调用了最后一个条件。检查并正确应用您的逻辑。

于 2013-09-01T15:11:02.013 回答
0

这是因为当您需要一个整数时,您使用 raw_input 获取第二个 if/elif 集合的值,该集合返回一个字符串。改用输入(就像您在第一个 if/elif 集上所做的那样)将返回一个整数,可以将其与您尝试做的整数进行比较。

于 2013-09-01T15:13:13.103 回答
0

首先,即使它有效,你的游戏也没有太大意义。

例如,如果有人输入 3 次第一个选项怎么办?假​​人还活着,你会给他一个“好工作”

它是否必须准确地玩 3 次游戏?他可以用 2-4 次游戏赢得它,这取决于选择。如果不是,为什么不使用 while 循环,直到 dummy 死了?

正如上面其他人所说,问题在于将所有内容分配给字符串的 raw_input,因此输入为整数,被分配为字符串,并且无法检查 if 条件。

但是您可以使用您在 python 中的假设知识水平使用该代码的 1/3 和 while 循环来实现此功能。

于 2013-09-01T16:59:34.973 回答
0

感谢各位的帮助:)。我犯了一个愚蠢的错误,我只需要将 raw_input 更改为 input 对不起,我现在知道更多我开始了 :(

于 2013-09-27T15:32:21.543 回答