2015-09-15 146 views
-3

实现一个程序,请求来自用户的四个数字(整数或浮点数)。你的程序应该计算前三个数字的平均值,并将平均值与第四个数字进行比较。如果它们相同,你的程序应该在屏幕上打印'Equal'。python错误,不知道为什么

n1= eval(input '[Enter first number: ]') 
n2= eval(input '[Enter second number: ]') 
n3= eval(input '[Enter third number: ]') 
n4= eval(input '[Enter fourth number: ]') 
n= ("n1 + n2 + n3/3") 
    if n== n4: 
    print ('equal: ') 
+2

你会得到什么错误? – TZHX

+2

你为什么使用'eval'? –

+2

你的代码不会工作,因为你写了'(“n1 + n2 + n3/3”)'而不是'(n1 + n2 + n3)/ 3' –

回答

0

你想要这个吗?

n1 = int(input('Enter first number: ')) 
n2 = int(input('Enter second number: ')) 
n3 = int(input('Enter third number: ') 
n4 = int(input('Enter fourth number: ') 

n = (n1 + n2 + n3)/3 


if n == n4: 
    print('equal: ') 
0

尝试这种解决方案(Python3):

n1 = int(input('[Enter first number: ]')) 
n2 = int(input('[Enter second number: ]')) 
n3 = int(input('[Enter third number: ]')) 
n4 = int(input('[Enter fourth number: ]')) 

n = (n1 + n2 + n3)/3 

if n == n4: 
    print('Equal') 

如果您需要浮点值,你可以使用浮动功能施放输入值。我相信这比使用int更好。

1

Eval在你的例子中是多余的。解决方案:

from decimal import Decimal, InvalidOperation 

def request_number(msg): 
    number = None 
    while number is None: 
     user_input = input(msg) 
     try: 
      number = Decimal(user_input) 
     except InvalidOperation: 
      pass 
    return number 

n1 = request_number('Enter first number: ') 
n2 = request_number('Enter second number: ') 
n3 = request_number('Enter third number: ') 
n4 = request_number('Enter fourth number: ') 

if (n1 + n2 + n3)/3 == n4: 
    print('Equal') 
1

无需使用eval,接受输入并存储到变量中。

n1 = int(input('Enter first number: ')) 
n2 = int(input('Enter second number: ')) 
n3 = int(input('Enter third number: ')) 
n4 = int(input('Enter fourth number: ')) 

完成后,打印它们的平均值是否等于n4。很简单。

不要使用" ",这使得它成为一个整体的字符串。

print 'equal: ' if (n4 == (n1 + n2 + n3)/3) else 0 

如果想要用你的方式做,请修复缩进。如下所示:

n= (n1 + n2 + n3/3) 
# paranthesis isn't needed here, but it's ok to use 
if n== n4: 
    print ('equal: ') 
相关问题