0

我的这部分代码有问题:

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

break 退出整个程序,我只想回到程序的开头(到while(1):)
我试过 pass,continue,return 想不出别的了。。谁能帮忙??谢谢:)
它还在将这个变量收入作为字符串读取..:income = int(input("Enter taxable income: "))我收到的错误消息是“TypeError:'str' object is not callable”

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)
4

3 回答 3

2
input = input("Enter status: ")

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

TypeError: 'str' object is not callable 

使用continue, 并更改您的变量名称,以免破坏函数。

于 2013-02-28T20:17:25.943 回答
0

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

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

于 2013-02-28T20:23:51.580 回答
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(",", ""))
于 2013-02-28T20:32:22.193 回答