2016-11-15 26 views
0

为什么满足所需条件时回路无法终止? 我将不胜感激深入的解释,而不是为我纠正的代码。满足条件时回路无法终止

def get_name(name_type): 
    return raw_input("Please enter you're {}name: \n".format(name_type)) 
def UserName(): 
    result = get_name("Fore"), get_name("Middle"), get_name("Sur") 
    return " ".join(result) 

print("You're UserName is : " + UserName()) 

while True: 
    def Base(): 
     return int(raw_input("Please select a base number: \n")) 
    def Power(): 
     return int(raw_input("Please select a power number: \n")) 
    def result(): 
     return Base()*Power() 

    print result() 

    cont = raw_input("Would you like to quit? yes/no > ") 
    while cont.lower() not in ("yes","no"): 
      cont = raw_input("Would you like to quit? yes/no > ") 
      if cont=="no": 
       break 
+0

因为你不破的时候'续= = “是”'? – L3viathan

回答

1

现在它的作用:

def get_name(name_type): 
    return raw_input("Please enter you're {}name: \n".format(name_type)) 
def UserName(): 
    result = get_name("Fore"), get_name("Middle"), get_name("Sur") 
    return " ".join(result) 

print("You're UserName is : " + UserName()) 
print 

cont = 'no' 

while cont != 'yes': 
    def Base(): 
     return int(raw_input("Please select a base number: \n")) 
    def Power(): 
     return int(raw_input("Please select a power number: \n")) 
    def result(): 
     return Base()*Power() 

    print result() 

    cont = raw_input("Would you like to quit? yes/no > ") 
    while cont.lower() not in ("yes","no"): 
      cont = raw_input("Would you like to quit? yes/no > ") 
      if cont=="yes": 
       break 
+0

我想你应该把你的var“cont”重命名为“discont”。 – Ukimiku

+0

我认为OP需要跳出外部'while True'循环,而这个代码并没有完成。 – Billy

+0

感谢,容纳代码来解决这个问题。 – Ukimiku

0

你内部的两个while循环。 你想摆脱这两个如果用户想要退出,否则只能从内之一:搬出while循环的条件,那么它应该工作:

from sys import exit 

... 

while True: 
    def Base(): 
     return int(raw_input("Please select a base number: \n")) 
    def Power(): 
     return int(raw_input("Please select a power number: \n")) 
    def result(): 
     return Base()*Power() 

    print result() 

    cont = raw_input("Would you like to quit? yes/no > ") 
    while cont.lower() not in ("yes","no"): 
     cont = raw_input("Would you like to quit? yes/no > ") 
    if cont=="yes": 
     break 

下一个忠告与你的问题没有任何关系,但无论如何我会给它:在每个循环迭代中,没有必要定义BasePowerResult函数。只需将值赋给变量,并直接打印:

base = int(raw_input("Please select a base number: \n")) 
power = int(raw_input("Please select a power number: \n")) 
print base*power 
+1

感谢您的建议L3viathan和我完全同意,但是为了我的任务的目的,我必须使用仅由一个命令构成的函数。厌烦我知道,而且毫无意义,但你去了。 –

+0

@DarrenMacis然后你仍然可以定义循环外的函数。我的答案能解决你的问题吗? – L3viathan

+0

如果他想在'while True'循环之后做些什么呢? – Billy

2

break语句嵌套在内while循环内,因此它被打破这个循环,而不是while True循环。我觉得移动的条件语句进行内部循环和改变逻辑if discont=='yes'(注:重命名的变种,以更准确的描述)会给你想要的东西:

while True: 

    ... 

    discont = raw_input("Would you like to quit? yes/no > ").lower() 
    while discont not in ("yes","no"): 
     discont = raw_input("Would you like to quit? yes/no > ").lower() 
    if discont=="yes": 
     break