【问题标题】:How to check if a string contains a word?如何检查字符串是否包含单词?
【发布时间】:2019-01-28 20:23:23
【问题描述】:

S0,基本上,我写了一个更长的程序,用另一种语言测试我的时态。它根据掷骰子随机测试我。但是,由于某种原因,我引用的 sn-p 不起作用。问题是如果我输入“现在”或“未来”会跳到其他部分。 “两者”出于某种原因起作用。我究竟做错了什么?这真的让我很烦,因为我看不出它有什么问题。

tenses_tested = input("Would you like to be tested on the present, future simple, or both?")

if "present" in tenses_tested:
    roll_range = 6
    roll_addition = 0
if "future" in tenses_tested:
    roll_range = 6
    roll_addition = 6
if "both" in tenses_tested:
    roll_range = 13
    roll_addition = 0
else:
    print("Something went wrong because this keeps coming up...")
    roll_range = 13
    roll_addition = 0

【问题讨论】:

  • 使用 else if's 而不是 just if's

标签: python python-3.x string python-2.7 substring


【解决方案1】:

不,这不是发生的事情。它是否成功进入 if 块取决于您输入的是“现在”还是“未来”。但随后它达到了最后一个条件。该条件与前两个条件独立else 仅适用于该条件;所以由于第三个 if 为 false,else 会被触发,并且会覆盖原来的值。

解决方案是使用elif 将它们全部放在同一个块中。

if "present" in tenses_tested:
    roll_range = 6
    roll_addition = 0
elif "future" in tenses_tested:
    roll_range = 6
    roll_addition = 6
elif "both" in tenses_tested:
    roll_range = 13
    roll_addition = 0
else:
    print("Something went wrong because this keeps coming up...")
    roll_range = 13
    roll_addition = 0

【讨论】:

  • 谢谢!!!!我有点不清楚何时使用 elif 以及何时使用 if 重复。区分它们有什么好处?我无法告诉你我对你的帮助有多感激。
  • 如我所说,如果都是相同条件的一部分,你应该使用if/elif/else。仅在完全独立的情况下使用单独的 if 语句;即他们both可能是真的。
【解决方案2】:
if "present" in tenses_tested:
    roll_range = 6
    roll_addition = 0
elif "future" in tenses_tested:
    roll_range = 6
    roll_addition = 6
elif "both" in tenses_tested:
    roll_range = 13
    roll_addition = 0
else:
    ...

在else之前只附加到if "both" ...

通过使用elif,我们将它们全部附加到else中,如果有任何工作,它不会进入else

【讨论】:

    【解决方案3】:

    问题在于您使用的是if 语句而不是elif,因此您的代码正在测试所有3 个条件。例如,如果您在"present" in tenses_tested: 块中添加打印语句,您将意识到它进入了该块。但它也进入了 future 和两个块,因为你输入的是 != "both",它进入了 else。未来也会发生同样的情况,但两者都不会,因为它是最后一个语句。这应该有效:

    tenses_tested = input("Would you like to be tested on the present, future simple, or both?")
    
    if "present" in tenses_tested:
        roll_range = 6
        roll_addition = 0
    elif "future" in tenses_tested:
        roll_range = 6
        roll_addition = 6
    elif "both" in tenses_tested:
        roll_range = 13
        roll_addition = 0
    else:
        print("Something went wrong because this keeps coming up...")
        roll_range = 13
        roll_addition = 0
    

    【讨论】:

    • 非常感谢!我是该网站的新手,人们愿意花一分钟时间帮助他人的意愿很棒! :)
    猜你喜欢
    • 2014-01-25
    • 1970-01-01
    • 2011-05-20
    • 1970-01-01
    • 2013-12-23
    相关资源
    最近更新 更多