任务:
编写一个名为
eval_loop
的函数,迭代地提示用户,获取结果输入并使用eval()
对其进行评估,然后打印结果。它应该一直持续到用户输入
'done'
,然后返回它评估的最后一个表达式的值。
我的代码:
import math
def eval_loop(m,n,i):
n = raw_input('I am the calculator and please type: ')
m = raw_input('enter done if you would like to quit! ')
i = 0
while (m!='done' and i>=0):
print eval(n)
eval_loop(m,n,i)
i += 1
break;
eval_loop('','1+2',0)
我的代码无法返回它评估的最后一个表达式的值!
答案 0 :(得分:1)
三条评论:
return
eval
的结果,则需要指定它;和i
是什么,但它似乎没有任何帮助。 考虑到这些,简要概述:
def eval_loop():
result = None
while True:
ui = raw_input("Enter a command (or 'done' to quit): ")
if ui.lower() == "done":
break
result = eval(ui)
print result
return result
要获得更强大的功能,请考虑将eval
包装在try
中并合理处理由此产生的任何错误。
答案 1 :(得分:1)
import math
def eval_loop():
while True:
x=input('Enter the expression to evaluate: ')
if x=='done':
break
else:
y=eval(x)
print(y)
print(y)
eval_loop()
答案 2 :(得分:1)
这是我想出的代码。首先,它使用If,else条件语句来理解代码流。然后使用while循环将其编写
import math
#using the eval function
"""eval("") takes a string as a variable and evaluates it
Using (If,else) Conditionals"""
def eval_(n):
m=int(n)
print("\nInput n = ",m)
x=eval('\nmath.pow(m,2)')
print("\nEvaluated value is = ", x)
def run():
n= input("\nEnter the value of n = ")
if n=='done' or n=='Done':
print("\nexiting program")
return
else:
eval_(n)
run() # recalling the function to create a loop
run()
现在使用While循环执行相同的操作
"using eval("") function using while loop"
def eval_1():
while True:
n=input("\nenter the value of n = ") #takes a str as input
if n=="done" or n=="Done": #using string to break the loop
break
m=int(n) # Since we're using eval to peform a math function.
print("\n\nInput n = ",m)
x=eval('\nmath.pow(m,2)') #Using m to perform the math
print("\nEvaluated value is " ,x)
eval_1()
答案 3 :(得分:0)
此方法将首先对用户输入的内容运行 eval,然后将该输入添加到名为 b 的新变量中。 当用户输入单词“done”时,它将打印新创建的变量 b - 完全按照练习的要求。
def eval_loop():
while True:
a = input("enter a:\n")
if a == "done":
print(eval(b)) # if "done" is entered, this line will print variable "b" (see comment below)
break
print(eval(a))
b = a # this adds the last evaluated to a new variable "b"
eval_loop()