Python和函数
我承认,我对python非常陌生,需要一些帮助。我正在尝试把一个非常简单的计算器从C++转换成Python。以下是迄今为止的代码:Python和函数,python,function,Python,Function,我承认,我对python非常陌生,需要一些帮助。我正在尝试把一个非常简单的计算器从C++转换成Python。以下是迄今为止的代码: x = 0 y = 0 sign = '+' def getnum(prompt, number): number = input(prompt) def getsign(prompt, sign): sign = raw_input(prompt) print sign def calc(string, number1, number2
x = 0
y = 0
sign = '+'
def getnum(prompt, number):
number = input(prompt)
def getsign(prompt, sign):
sign = raw_input(prompt)
print sign
def calc(string, number1, number2, sign):
print string
print " "
if sign == '+' or 'plus':
a = x + y
elif sign == 'x' or '*' or 'times':
a = x * y
elif sign == '/' or 'divided by':
a = x / y
elif sign == '-' or 'minus':
a = x - y
print string, a
getnum("Enter first number: ", x)
getnum("Enter second number: ", y)
getsign("Enter sign: ", sign)
calc("The answer is: ", x, y, sign)
print x
print y
print sign
函数的问题。最后,我得到了这个:答案是:0
0
0
+
我似乎无法改变结尾的两个数字。我倾向于把这当作一个“家庭作业”问题,告诉你你做错了什么,而不是告诉你确切的解决办法。当您使用
input(prompt)
获取输入时,您将得到一个字符串。如果你想把它当作一个数字,你需要明确地告诉Python。我倾向于把它当作一个“家庭作业”问题,告诉你做错了什么,而不是告诉你确切的解决方案。当您使用input(prompt)
获取输入时,您将得到一个字符串。如果要将其视为一个数字,则需要明确地告诉Python。存在许多问题
让我们在交互式Python解释器中查看它们,当您在试验Python时,它是一个非常宝贵的工具
首先,getnum()
>>> def getnum(prompt, number):
... number = input(prompt)
...
>>> x = 0
>>> getnum("Enter first number: ", x)
Enter first number: 6
>>> print x
0
在这里,您应该返回值
并将其捕获到变量中
>>> def getnum(prompt):
... return input(prompt)
...
>>> x = 0
>>> x = getnum("Enter first number: ")
Enter first number: 6
>>> print x
6
getsign()
也有类似的问题
转到calc()
。这里的或
没有达到您期望的效果:
>>> sign = '*'
>>> if sign == '+' or 'plus':
... print 'plus'
...
plus
这需要看起来更像:
>>> sign = '*'
>>> if sign == '+' or sign == 'plus':
... print 'plus'
... else:
... print 'not plus'
...
not plus
或者更好:
>>> if sign in ('+', 'plus'):
... print 'plus'
... else:
... print 'not plus'
...
not plus
>>> sign = '+'
>>> if sign in ('+', 'plus'):
... print 'plus'
... else:
... print 'not plus'
...
plus
此函数中的其他条件也存在相同的问题。存在许多问题
让我们在交互式Python解释器中查看它们,当您在试验Python时,它是一个非常宝贵的工具
首先,getnum()
>>> def getnum(prompt, number):
... number = input(prompt)
...
>>> x = 0
>>> getnum("Enter first number: ", x)
Enter first number: 6
>>> print x
0
在这里,您应该返回值
并将其捕获到变量中
>>> def getnum(prompt):
... return input(prompt)
...
>>> x = 0
>>> x = getnum("Enter first number: ")
Enter first number: 6
>>> print x
6
getsign()
也有类似的问题
转到calc()
。这里的或
没有达到您期望的效果:
>>> sign = '*'
>>> if sign == '+' or 'plus':
... print 'plus'
...
plus
这需要看起来更像:
>>> sign = '*'
>>> if sign == '+' or sign == 'plus':
... print 'plus'
... else:
... print 'not plus'
...
not plus
或者更好:
>>> if sign in ('+', 'plus'):
... print 'plus'
... else:
... print 'not plus'
...
not plus
>>> sign = '+'
>>> if sign in ('+', 'plus'):
... print 'plus'
... else:
... print 'not plus'
...
plus
这个函数中的其他条件也有同样的问题。我在您必须更改代码的地方给您一些建议,如果您知道函数在python中如何工作(在任何语言中),这些肯定会使您的程序正常工作
变量“number”是该函数的局部变量。因此,每次调用函数“getnum”时,都会为该数字指定一个值,但您还需要做些什么呢
**提示1:一种机制,一旦你得到这个数字,尝试将这个数字传递给一个可以使用它的变量。尝试使用return
**提示2:使用输入时,默认情况下,输入的值将转换为字符串。因此,考虑一个方法,其中的值将从string更改为int“casting”
印刷标志
直接将标志打印到控制台,只需考虑一种情况,您的程序可以使用标志。我会给出同样的提示
**提示:尝试使用return。我在您必须更改代码的地方给您一些建议,如果您知道函数在python中是如何工作的(在任何语言中),这些建议肯定会使您的程序正常工作
变量“number”是该函数的局部变量。因此,每次调用函数“getnum”时,都会为该数字指定一个值,但您还需要做些什么呢
**提示1:一种机制,一旦你得到这个数字,尝试将这个数字传递给一个可以使用它的变量。尝试使用return
**提示2:使用输入时,默认情况下,输入的值将转换为字符串。因此,考虑一个方法,其中的值将从string更改为int“casting”
印刷标志
直接将标志打印到控制台,只需考虑一种情况,您的程序可以使用标志。我会给出同样的提示
**提示:尝试使用return。Python没有“按名称调用”。是的。Python没有
这样的功能评估:
getnum("Enter first number: ", x)
在Python中永远不会将新值赋值给x
。在C语言中,可以指定一个新值。在Python中,不能以这种方式分配新值
[可以对值进行变异,但这与此问题无关。]Python没有“按名称调用”。是的。Python没有
这样的功能评估:
getnum("Enter first number: ", x)
在Python中永远不会将新值赋值给x
。在C语言中,可以指定一个新值。在Python中,不能以这种方式分配新值
[一个值可以变异,但这与这个问题无关。]我想这是给学校的,所以这可能对你有帮助
#!/usr/bin/env python
import re
#put the logic in an object like enviroment
class CalculatorProto(object):
def __init__(self, numberone, numbertwo):
"""
initialize the data
"""
self.firsn = numberone
self.twon = numbertwo
def Verifynumber(self):
"""
verify is you pass abs numbers
"""
numbers = re.compile("^[0-9]+$")
if numbers.search(self.firsn) and numbers.search(self.twon):
self.firsn = int(self.firsn)
self.twon = int(self.twon)
return True
else:
return False
def sum(self):
"""
manage sum
"""
rsum = self.firsn + self.twon
return rsum
def rest(self):
"""
manage rest
"""
if self.firsn > self.twon:
rrest = self.firsn - self.twon
return rrest
else:
rrest = self.twon - self.firsn
return rrest
def div(self):
"""
manage div
"""
if int(self.firsn) > int(self.twon):
if self.twon != 0:
rdiv = self.firsn / self.twon
return rdiv
return "Is not good idea div a number by 0"
else:
if self.firsn != 0:
rdiv = self.twon / self.firsn
return rdiv
return "Is not good idea div a number by 0"
def mul(self):
rmul = self.firsn * self.twon
return rmul
if __name__ == "__main__":
#here you cant write you small interface
print "Enter two numbers, and a operation please"
o = raw_input("One: ")
t = raw_input("Two: ")
operation = raw_input("Operation: ")
while operation not in ("sum", "div", "rest", "mul"):
print "WTF?? Enter a valid operation"
print "sum\ndiv\nrest\nor mul"
operation = raw_input("Operation: ")
cal = CalculatorProto(o, t)
if cal.Verifynumber():
exec("print cal.%s()" % operation)
else:
print "Please insert absolute numbers"
你不能修改这个,因为管理更复杂。我想这是给学校的,所以这可能对你有帮助
#!/usr/bin/env python
import re
#put the logic in an object like enviroment
class CalculatorProto(object):
def __init__(self, numberone, numbertwo):
"""
initialize the data
"""
self.firsn = numberone
self.twon = numbertwo
def Verifynumber(self):
"""
verify is you pass abs numbers
"""
numbers = re.compile("^[0-9]+$")
if numbers.search(self.firsn) and numbers.search(self.twon):
self.firsn = int(self.firsn)
self.twon = int(self.twon)
return True
else:
return False
def sum(self):
"""
manage sum
"""
rsum = self.firsn + self.twon
return rsum
def rest(self):
"""
manage rest
"""
if self.firsn > self.twon:
rrest = self.firsn - self.twon
return rrest
else:
rrest = self.twon - self.firsn
return rrest
def div(self):
"""
manage div
"""
if int(self.firsn) > int(self.twon):
if self.twon != 0:
rdiv = self.firsn / self.twon
return rdiv
return "Is not good idea div a number by 0"
else:
if self.firsn != 0:
rdiv = self.twon / self.firsn
return rdiv
return "Is not good idea div a number by 0"
def mul(self):
rmul = self.firsn * self.twon
return rmul
if __name__ == "__main__":
#here you cant write you small interface
print "Enter two numbers, and a operation please"
o = raw_input("One: ")
t = raw_input("Two: ")
operation = raw_input("Operation: ")
while operation not in ("sum", "div", "rest", "mul"):
print "WTF?? Enter a valid operation"
print "sum\ndiv\nrest\nor mul"
operation = raw_input("Operation: ")
cal = CalculatorProto(o, t)
if cal.Verifynumber():
exec("print cal.%s()" % operation)
else:
print "Please insert absolute numbers"
对于更复杂的管理,您不能对此进行修改。“我对python非常陌生”。。。您是否完成过任何Python教程?您的calc
函数没有return
x
和y
不会出现在=
语句的左侧(初始值除外)。除非x
或y
出现在=
的左侧,否则它们的值不可能更改。你能列出一些你做过的教程吗?也许我们可以推荐比您尝试过的更好的教程来涵盖=
语句。我一定很困惑函数是如何工作的。我的计划是使用函数getnum()
来更改x
和y
的值。我对函数的理解是,当我运行getnum(“输入一个数字”,x)
时,变量提示符
将替换为“输入一个数字”
,变量数字
将替换为变量x
。是我的想法错了,还是我把代码搞砸了。说到教程,我几乎用谷歌搜索我的问题,这是第一个我找不到答案的问题