python - 突破嵌套条件到原始循环的顶部

时间:2013-02-28 20:11:22

标签: python loops

我的代码中有这部分问题:

if(input not in status_list):
    print("Invalid Entry, try again.")
    break

休息退出整个程序,我只想回到程序的开头(到 while(1):)
我试过传递,继续,返回想不出别的..有谁能帮忙? 谢谢:)
同样它正在读取这个变量收入字符串仍然是..:income = int(input("Enter taxable income: "))我得到的错误信息是“TypeError:'str'对象不可调用”

import subprocess
status_list = ["s","mj","ms","h"]


while(1):
    print ("\nCompute income tax: \n")
    print ("Status' are formatted as: ")
    print ("s = single \n mj = married and filing jointly \n ms = married and filing seperately \n h = head of household \n q = quit\n")
    input = input("Enter status: ")
    if(input == 'q'):
        print("Quitting program.")
        break
    if(input not in status_list):
        print("Invalid Entry, try again.")
        break 

    income = int(input("Enter taxable income: "))
    income.replace("$","")
    income.replace(",","")

    #passing input to perl files
    if(input == 's'):
        subprocess.call("single.pl")
    elif(input == 'mj'):
        subprocess.call("mj.pl", income)
    elif(input == 'ms'):
        subprocess.call("ms.pl", income)
    else:
        subprocess.call("head.pl", income)

3 个答案:

答案 0 :(得分:2)

input = input("Enter status: ")

您将名称inputinput函数重新绑定到其结果,这是一个字符串。所以下次你调用它时,continue完成它的工作后,input不再命名一个函数,它只是一个字符串,你不能调用一个字符串,因此

TypeError: 'str' object is not callable 

使用continue,并更改变量名称,以免破坏该功能。

答案 1 :(得分:0)

您的问题不会继续,而是您的代码中还有一个未解决的错误。继续正在完成它应该做的事情(即你想在那个条件中continue。)

您将input重命名为字符串,因此该名称不再指向代码中的内置input函数。这就是您不使用保留关键字作为变量名称的原因。将变量称为“输入”之外的其他变量,您的代码应该可以正常工作。

答案 2 :(得分:0)

继续正常运作。您的脚本的问题是您尝试在int:

上调用replace()
income = int(input("Enter taxable income: "))
# income is an int, not a string, so the following fails
income.replace("$","")

你可以这样做:

income = int(input("Enter taxable income: ").replace("$", "").replace(",", ""))