你如何从另一个def转移价值?

时间:2016-04-15 19:07:46

标签: python function if-statement

所以我刚开始在学校学习python,而且我已经在家里练习它,所以我是python的新手。 我遇到的问题是我试图将值从def()转移到main(),但是当我使用{0}将它们放入打印或计算中时,它会显示错误并且它们不会出现问题。 ; t有任何价值。

这是我的代码:

def two():
  print("Hello world!")
  print("Please enter three numbers")
  nam=int(input("Enter the first number: "))
  num=int(input("Enter the second number: "))
  nom=int(input("Enter the third number: "))
  print("So the numbers you have entered are {0}, {1},{2}.".format(nam,nom,num))

def main():
  main=two()
  inpt=input("what math related problem would you like me to do with them? tell me here: ").capitalize()
  if inpt== "Divide":
    ans=({0}/{1}/{2})/1
    print("{0}, there you go!")
  elif inpt== "Times":
    ans=(nam*num*nom)/1
    print("{1}, there you go!")

而且这是我从运行中得到的:

>>> main()
Hello world!
Please enter three numbers
Enter the first number: 30
Enter the second number: 30
Enter the third number: 30
So the numbers you have entered are 30, 30, 30.
what math related problem would you like me to do with them? tell me here:    divide
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
main()
File "C:\Users\chemg\Documents\PracticePY.py", line 40, in main
ans=({0}/{1}/{2})/1
TypeError: unsupported operand type(s) for /: 'set' and 'set'

3 个答案:

答案 0 :(得分:1)

您可以返回上一个函数中的值,然后将它们设置为变量。

two()

结束时
return nam, num, nom

main()中设置main = two()

nam, num, nom = two()

此外,您应该重命名main,您可以使用已保留的命名空间覆盖功能。

然后,您可以使用这些值进行划分

ans = nam / num / nom

现在这些是单身,即 - 包含一个元素的集合。

然后,您可以使用format将这些内容输入到print语句中的字符串中

答案 1 :(得分:0)

在您的代码中:

ans=({0}/{1}/{2})/1

{0}{1}{2}是包含一个元素的集合。你不能分组,这就是错误所抱怨的。

您需要将值从two()传递到main()。有关如何完成的详细信息,请参阅Slayer的答案。

您无法在任何地方使用{0}令牌,因为format()会从字符串中读取它们以格式化文本。在字符串之外,它是一个包含零的集合。

答案 2 :(得分:0)

此处的问题在于您尝试将字符串格式应用于主函数中的非字符串操作。

print("So the numbers you have entered are {0}, {1},{2}.".format(nam,nom,num))

您在上面的行中使用的大括号只会替代单个format函数调用中的值。当您致电ans=({0}/{1}/{2})/1时,您实际上正在创建三个单独的sets;这是一种不同的Python数据类型。您收到该错误是因为集合并不像您的代码尝试那样进行划分。

正如Slayer的答案中所提到的,最好的办法是将所有三个变量从“你好”中回复。功能:

return nam, num, nom

这样,您可以在主函数中为它们分配其他变量。我强烈建议不要创建一个与你的函数同名的变量。它会给你造成一些非常混乱的行为。

nam, num, nom = two()

最后,可以修改实际创建例外的代码行。

ans = nam / num / nom