从我制作的另一个脚本导入python中的函数

时间:2015-10-24 00:52:31

标签: python function import

我遇到了一个问题,我老师要我从其他脚本导入功能

def readint():
    prompt = int(input("Enter an integer: "))
    print(" You entered: ",prompt," and the type is", type(prompt))

然后在另一个程序上我可以像

那样导入它
import test 

test.readint()

但当我试图准确地得到它想要的时候

test.readint(prompt)

我似乎无法让它发挥作用。我尝试了这个,但它似乎没有工作

def readint(prompt):
prompt = int(input("Enter an integer: "))
print(" You entered: ",prompt," and the type is", type(prompt))
return prompt

任何解释都将不胜感激!

2 个答案:

答案 0 :(得分:0)

您可能在print语句中遇到逗号问题。

当我运行你的初始程序时,我得到了这个:

>>> 
Enter an integer: 3
(' You entered: ', 3, ' and the type is', <type 'int'>)

这似乎不像你想要的那样(它是一个元组)

您似乎想要打印的是字符串,

You entered: 3 and the type is <type 'int'>

为此,您需要将变量转换为字符串。

<强> test.py

def readint(prompt):
    prompt = int(input("Enter an integer: "))
    print ("You entered: " + str(prompt) + " and the type is " + str(type(prompt)))
    return prompt

<强> main.py

import temp

prompt = None
temp.readint(prompt)

请注意+运算符和str强制转换

对我来说,这会输出以下内容:

>>> 
Enter an integer: 3
You entered: 3 and the type is <type 'int'>

这看起来就像你要找的那样。

作为旁注,我不确定你为什么要传递prompt变量,因为它可以省略,并且没有理由在那里。简单地从函数定义中删除它而不将其传入是完全有效的:

def readint():
    ...

import test
test.readint()

快乐的编码!

- Elipzer

答案 1 :(得分:0)

首先,当您获得提示值时,不要将结果打印到屏幕,而是尝试将其作为字符串返回。这样,您可以将返回值分配给变量并稍后访问它。挺整洁的,对吧?你的第二次尝试已经有了,但有两个小问题:

将参数传递给此函数没有意义。这是因为input()已经在变量中存储了一个值,因此传递参数没有意义,你可以创建一个函数变量并将其存储在那里。此外,做" and the type is",type(prompt))没有意义。这是因为我们已经知道它是一个整数:在得到它的字符串值之后,你将prompt的结果转换为整数。如果您传递了一个无法转换为整数的提示值,那么您将获得ValueError。因此,请尝试使用此代码:

def readint():
    prompt = int(input("Enter an integer: "))
    return "You entered " + str(prompt)

这样,在您的其他文件中,您可以执行此操作:

>>> import test
>>> a = test.readint()
Enter an integer7
>>> a
'You entered 7'
>>> 

(请记住,三个&gt;符号不是python代码,它来自shell) 如果要输入无效值以转换为整数,则会引发ValueError。我们怎么能防止这种情况?您可以使用tryexcept语句。基本上,它的作用是,它试图做某事,然后,如果在该过程中引发异常,它会做其他事情。

所以,总而言之。你的代码看起来像这样:

def readint():
    try:
        prompt = int(input("Enter an integer: "))
    except ValueError:
        return "Invalid value! It must be a number."
    return "You entered " + str(prompt)