【问题标题】:Python if elif codePython if elif 代码
【发布时间】:2013-09-01 15:01:53
【问题描述】:
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 代码?
对不起,我不知道代码的其他部分是否有错误..

【问题讨论】:

    标签: python if-statement


    【解决方案1】:

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

    所以int == str 总是假的。

    【讨论】:

      【解决方案2】:

      这是因为input() 函数接受字符串输入。

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

      if x == '1':
          # your stuffs
      
      elif x == '2':
         # your stuffs
      

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

      【讨论】:

      • 他可能正在使用 2.7,所以 input() 会评估您输入的值。所以他不需要在 2.7 中将它们转换为 int.raw_input() 导致这个问题。
      • 哦,我以为他在使用Python3。你使用的是哪个版本的 Python @gamesyay12?
      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

          例如,如果有人在第一个选项中输入 3 次怎么办?Dummy 还活着,你会给他一个“GOOD JOB”

          它必须玩 3 次吗?他可以用 2-4 次游戏获胜,这取决于选择。如果不是,为什么不使用 while 循环直到 dummy 死掉?

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

          但是你可以用你假设的 Python 知识水平来完成这个工作,只需 1/3 的代码和一个 while 循环。

          【讨论】:

          • Vaggelas 没做完会有用处……如果是这样就太容易了,这只是启动脚本
          • 好吧,我真的不知道你在做什么,我是说作为一个游戏没有那么大的意义。我让它在 20 行中工作,以类似的方式有一个while循环,但如果它适合以后的项目,你可以坚持你的方式。用input()替换raw_input(),代码将运行正常,而且你真的不必用假人打印6次life.remove them and put a simple print at the end of each play.你比你需要的多4行。
          【解决方案6】:

          感谢各位的帮助 :)。我犯了一个愚蠢的错误,我只需要改变 原始输入 进入 输入 抱歉,我现在知道的更多是我当时开始的:(

          【讨论】:

            猜你喜欢
            • 2016-08-26
            • 1970-01-01
            • 1970-01-01
            • 2017-03-02
            • 2017-05-03
            • 1970-01-01
            • 2017-07-03
            • 2022-12-31
            • 2016-05-30
            相关资源
            最近更新 更多