首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >行内代码停止

行内代码停止
EN

Stack Overflow用户
提问于 2013-11-30 04:39:02
回答 2查看 68关注 0票数 0

我有一段烦人的代码,我想让它发生一些变化……

代码语言:javascript
复制
import time
global END
END = 0
def bacteria():
b = int(input("Bacteria number? "))
l = int(input("Limit? "))
i = (float(input("Increase by what % each time? ")))/100+1
h = 0
d = 0
w = 0
while b < l:
    b = b*i
    h = h+1
else:
    while h > 24:
        h = h-24
        d = d+1
    else:
        while d > 7:
            d = d-7
            w = w+1
print("The bacteria took " + str(w) + " weeks, " + str(d) + " days and " + str(h) + " hours.")
def runscript():
    ANSWER = 0
    ANSWER = input("Run what Program? ")
    if ANSWER == "bacteria":
        print(bacteria())
        ANSWER = 0
    if ANSWER == "jimmy":
        print(jimmy())
        ANSWER = 0
    if ANSWER == "STOP" or "stop":
        quit()
while True:
    print(runscript())

因此,在"if ANSWER == " STOP“或”stop“行之后:”我希望脚本结束;但只有当我输入stop或stop作为答案时,才能停止否则无限循环。

EN

回答 2

Stack Overflow用户

发布于 2013-11-30 04:40:11

现在,你的代码是这样解释的:

代码语言:javascript
复制
if (ANSWER == "STOP") or ("stop"):

此外,因为在Python语言中非空字符串的计算结果为True,所以此if语句将始终通过,因为"stop"的计算结果始终为True

要解决此问题,请使用in

代码语言:javascript
复制
if ANSWER in ("STOP", "stop"):

str.lower*

代码语言:javascript
复制
if ANSWER.lower() == "stop":

*注意:正如@gnibbler下面评论的那样,如果你使用的是Python3.x,你应该使用str.casefold而不是str.lower。它与unicode更兼容。

票数 2
EN

Stack Overflow用户

发布于 2013-11-30 04:51:17

在python中是or operator returns true if any of the two operands are non zero

在这种情况下,添加括号有助于明确您当前的逻辑:

代码语言:javascript
复制
if((ANSWER == "STOP") or ("stop")):

在python中,if("stop")总是返回True。因为如果这样,则整个条件始终为真,并且quite()将始终执行。

为了解决这个问题,您可以将您的逻辑更改为:

代码语言:javascript
复制
if(ANSWER == "STOP") or (ANSWER == "stop"):

代码语言:javascript
复制
if ANSWER in ["STOP","stop"]:
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20293054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档