我遇到了一个问题,我老师要我从其他脚本导入功能
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
任何解释都将不胜感激!
答案 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
。我们怎么能防止这种情况?您可以使用try
,except
语句。基本上,它的作用是,它试图做某事,然后,如果在该过程中引发异常,它会做其他事情。
所以,总而言之。你的代码看起来像这样:
def readint():
try:
prompt = int(input("Enter an integer: "))
except ValueError:
return "Invalid value! It must be a number."
return "You entered " + str(prompt)