2013-10-10 72 views
0

我已经在这几个小时,寻找问题,甚至要求我的兄弟,谁是EE的高级,甚至他被难倒了。这是在午夜前的一个项目,我似乎无法摆脱这个错误。任何人都可以看看我的代码,并找出为什么我一直得到这个错误?谢谢,是的,它们在while语句下面正确缩进。Python3虽然语法错误

# Initialize Variables 
count = 0 

#First Customer Input 
cus = input("Enter customer's name: ") 
custype = input("Enter customer's service type (R for Residential. B for Business): ") 
location = input("Enter customer's service location (C for City. P for Parish): ") 
kwh = eval(input("Enter customer's number of Kilowatt Hours Used: ") 

#Repeat loop based on input items NOT being the sentinel value 
while (count < 10): 
    if custype == 'R' and location1 == 'C': 
     rate = residentialCity 
    elif custype == 'R' and location1 == 'P': 
     rate = residentialParish 
    elif custype == 'B' and location1 == 'C' or 'P': 
     rate = business 
+0

你能编辑你的文章以包含代码中的确切缩进吗? Python对它很挑剔。它确实看起来像是缺少'kwh = eval(input ...'行中的右括号,这是一个非常糟糕的想法BTW。 –

+0

您的代码未被格式化为代码显示(我们已经为您修复了它)要正确地格式化代码,选择它并点击'{}'图标,或者缩进4列 –

+0

@ D.Shawley是对的如果你想输入一个数字,使用'int(input(...))'或'float(input(...))'。有一个原因是Python在3.0中摆脱了自动评估的输入函数,不要把它带回来 – abarnert

回答

5
kwh = eval(input("Enter customer's number of Kilowatt Hours Used: ") 

算括号。

而D.Shawley在评论中指出,将用户输入传递给eval可以做任意坏事。无论如何,你为什么使用eval

+1

一般来说,任何时候你有一个'SyntaxError'看起来完全有效的那一行,而且不管muc如何,都会得到相同的'SyntaxError'你从那条线上剥离出来,并且在其他地方复制并粘贴的同一行很好......问题在于它上面的行缺少关闭paren,括号,大括号或引号(或者有一个流浪的反斜线)。 – abarnert

+0

谢谢。那就是诀窍。我不能相信我错过了这一点,尽管对我来说有一点公平,那就是“错误”的四行。 –

+1

@DanielBoudreaux:这是你经过几次调试后学习的东西之一,然后它变成第二天性。希望得到这个窍门,你只需要经历一次。 – abarnert

3

如上州的答案,你错过了一个括号有:

kwh = eval(input("Enter customer's number of Kilowatt Hours Used: ") 

为什么你会需要一个eval声明?看起来像你期待一个数字,并希望将字符串更改为一个整数。为什么不这样做呢?

kwh = int(input("Enter customer's number of Kilowatt Hours Used: ")) 

只是一个建议,但除非有没有更好的办法,不要用eval。这是不安全和不稳定的,有人可能意外地或不会输入代码,并且会混淆你的程序。

+0

有人已经写过这个问题的答案,并且评论关注了eval的使用。你甚至引用了另一个答案。这个答案没有提供真正的价值,这就是为什么我下调了。 –

+0

那么,在我的辩护中,我只建议他使用'int',因为那可能是他想要的。 – aIKid

+0

虽然我很看重你的意见。谢谢。 – aIKid