2014-10-31 86 views
-1

我似乎无法弄清楚为什么当我运行我的程序我收到错误ValueError:无效文字为int()与基10:'输入便士: ”。 整个程序都是由我的导师完成的,所以我们可以添加这些功能以使其工作。即时通讯目前试图定义get_input1,但即时通讯没有运气。任何帮助都会很棒。ValueError:无效文字为int()与基数10不知道为什么

def main(): 
    pennies = get_input1("Enter pennies : ") 
    nickels = get_input("Enter nickels : ") 
    dimes = get_input("Enter dimes : ") 
    quarters = get_input("Enter quarters : ") 

    print("You entered : ") 
    print("\tPennies : " , pennies) 
    print("\tNickels : " , nickels) 
    print("\tDimes : " , dimes) 
    print("\tQuarters : " , quarters) 


    total_value = get_total(pennies, nickels, dimes, quarters) 
    dollars = get_dollars(pennies, nickels, dimes, quarters) 
    left_over_cents = get_left_over_cents(pennies, nickels, dimes, quarters) 

    print("Total = $", total_value, sep="") 
    print("You have", dollars, "dollars and", left_over_cents, "cent(s)") 

def get_input1(pennies): 
    int(input("Enter Pennies: ")) 
    if int(pennies) < 0: 
     print('Error: money cannot be negative') 
     pennies = int(input('Enter correct amount of pennies: ')) 



main() 

回答

1

改变这一点:

int(input("Enter Pennies: ")) 

这样:

pennies = input("Enter Pennies: ") 

编辑 我相信这只是一个笔误,你应该分配便士输入结果。

+0

OP没有分配任何东西给名称int,他们不应该做的是将一个字符串传递给它们从不使用的函数,get_input应该不带参数 – 2014-11-01 01:37:02

+0

@PadraicCunningham,谢谢我编辑了我的答案,我也相信这只是一个真正的错误,忘记将“便士”分配给输入结果,而不是不理解它。 – Anzel 2014-11-01 02:21:30

0
def main(): 
    pennies = get_input1("Enter pennies : ") 
    nickels = get_input2("Enter nickels : ") 
    dimes = get_input3("Enter dimes : ") 
    quarters = get_input4("Enter quarters : ") 

    print("You entered : ") 
    print("\tPennies : " , pennies) 
    print("\tNickels : " , nickels) 
    print("\tDimes : " , dimes) 
    print("\tQuarters : " , quarters) 


    total_value = get_total(pennies, nickels, dimes, quarters) 
    dollars = get_dollars(pennies, nickels, dimes, quarters) 
    left_over_cents = get_left_over_cents(pennies, nickels, dimes, quarters) 

    print("Total = $", total_value, sep="") 
    print("You have", dollars, "dollars and", left_over_cents, "cent(s)") 

def get_input1(pennies): 
    pennies = int(input("Enter Pennies: ")) 
    if int(pennies) < 0: 
     print('Error: money cannot be negative') 
     pennies = int(input('Enter correct amount of pennies: ')) 

    return(pennies) 

def get_input2(nickels): 
    nickels = int(input("Enter nickels: ")) 
    if int(nickels) < 0: 
     print('Error: money cannot be negative') 
     pennies = int(input('Enter correct amount of nickels: ')) 

    return(nickels) 

def get_input3(dimes): 
    dimes = int(input("Enter dimes: ")) 
    if int(dimes) < 0: 
     print('Error: money cannot be negative') 
     pennies = int(input('Enter correct amount of dimes: ')) 

    return(dimes) 

def get_input4(quarters): 
    quarters = int(input("Enter quarters: ")) 
    if int(quarters) < 0: 
     print('Error: money cannot be negative') 
     pennies = int(input('Enter correct amount of quarters: ')) 

    return(quarters) 

main() 

这会让你通过定义你的便士,镍,硬币和宿舍。现在您将不得不定义get_total,get_dollar和get_left_over_cents。

你需要在int值前面有便士就是为什么你收到错误。然后你可以将这个便士的价值返还给主。

希望这会有所帮助!

+0

因为这个网站不适合做某人编程任务的一半工作,所以下调这一点。但也许我错了。 – 2014-10-31 23:56:48

0

您的数据流向后。在main(),你打电话get_input1检索值,就像与输入(),但如果我们看看这get_input1作用:

# Names its argument, which was a question, "pennies" 
def get_input1(pennies): 
    # Asks a question, converts to int, and discards it 
    int(input("Enter Pennies: ")) 
    if int(pennies) < 0: # Converts pennies to int; but it was a question! 
     print('Error: money cannot be negative') 
     # This is the only place to alter pennies, but it doesn't return it 
     pennies = int(input('Enter correct amount of pennies: ')) 

它看起来像这样曾经是被重构处理代码每个具有函数的硬币都会调用它,但它没有进行所需的两个修改:一种方法来改变它所要求的内容,以及一种返回答案的方法。请注意,函数参数(如get_input1中的便士)是局部变量;主从未看到它的变化。

相关问题