Python 变量不';I don’我不想得到定义和一般建议
只是在这里随便学习python并尝试编写fizzbuzz。我正在读一本书,想让我继续学习,但我只是想自己尝试一下,因为我认为这对我来说是最好的,就像学习东西时通常做的那样。这就是我得到的:Python 变量不';I don’我不想得到定义和一般建议,python,Python,只是在这里随便学习python并尝试编写fizzbuzz。我正在读一本书,想让我继续学习,但我只是想自己尝试一下,因为我认为这对我来说是最好的,就像学习东西时通常做的那样。这就是我得到的: def input_and_test(): print "Gimme something and it better be a number or shit ain't gon work" inputt = raw_input() inputt = str(inputt) t
def input_and_test():
print "Gimme something and it better be a number or shit ain't gon work"
inputt = raw_input()
inputt = str(inputt)
try:
input_data_type = int(inputt)
except ValueError:
print "Yeah that sure as hell ain't a number, sonny"
input_and_test()
else:
print 'Great, now lemme check'
input_and_test()
input_lenght = len(inputt)
input_lenght = int(int(input_lenght) - 1)
last_number = inputt[input_lenght]
if input == 1:
print 'Even'
elif last_number == 0 or last_number == 2 or last_number == 4 or last_number == 6 or last_number == 8:
print 'Even'
else:
print 'Odd'
现在我确信这是非常低效的,但这并不重要,因为我想学习如何以这种“方式”完成它。但它会抛出以下错误:
Traceback (most recent call last):
File "C:\Python27\test.py", line 16, in <module>
input_lenght = len(inputt)
NameError: name 'inputt' is not defined
回溯(最近一次呼叫最后一次):
文件“C:\Python27\test.py”,第16行,在
输入长度=长度(输入)
名称错误:未定义名称“input”
为什么??我刚才调用的第一个函数中没有定义input吗?有没有更好的方法来替换异常处理并再次启动修复所有这些问题的函数部分?这段代码有什么不好的地方(除了它不是最佳的嘶嘶声)我应该在将来避免吗?再一次抱歉,这是一个非常糟糕的问题,这个问题可能非常简单。我感谢所有的帮助 正如Barmar在评论中所说,您应该真正使用
return
将函数的输出输出到调用代码中。下面是如何使用return
更好地编写函数:
def input_and_test():
print "Gimme something and it better be a number or shit ain't gon work"
inputt = raw_input()
inputt = str(inputt)
try:
input_data_type = int(inputt)
except ValueError:
print "Yeah that sure as hell ain't a number, sonny"
return input_and_test()
else:
print 'Great, now lemme check'
return inputt
inputt = input_and_test()
input_lenght = len(inputt)
input_lenght = int(int(input_lenght) - 1)
last_number = inputt[input_lenght]
if input == 1:
print 'Even'
elif last_number == 0 or last_number == 2 or last_number == 4 or last_number == 6 or last_number == 8:
print 'Even'
else:
print 'Odd'
在上面的代码中,我只留下了变量名,名称input
在两个地方使用。但这可能会让您感到困惑,因为函数内部的input
变量与函数外部的input
变量不同。因此,我将您的函数变量内部重命名为不同的名称(我个人喜欢使用名称result
表示“此函数最终将返回的值”),这样您就更容易看到发生了什么:
def input_and_test():
print "Gimme something and it better be a number or shit ain't gon work"
result = raw_input()
result = str(result)
try:
input_data_type = int(result)
except ValueError:
print "Yeah that sure as hell ain't a number, sonny"
return input_and_test()
else:
print 'Great, now lemme check'
return result
inputt = input_and_test()
input_lenght = len(inputt)
input_lenght = int(int(input_lenght) - 1)
last_number = inputt[input_lenght]
if input == 1:
print 'Even'
elif last_number == 0 or last_number == 2 or last_number == 4 or last_number == 6 or last_number == 8:
print 'Even'
else:
print 'Odd'
现在,两个不同的变量有两个不同的名称
现在,您看到我在函数中有两个不同的
return
语句了吗?您是否清楚这是为什么,或者您是否需要我在这个答案上进行扩展,以解释return input_和_test()的原因
行是必需的?正如Barmar在一篇评论中所说,您应该真正使用return
将函数的输出输出到调用代码中。下面是使用return
编写函数的方法:
def input_and_test():
print "Gimme something and it better be a number or shit ain't gon work"
inputt = raw_input()
inputt = str(inputt)
try:
input_data_type = int(inputt)
except ValueError:
print "Yeah that sure as hell ain't a number, sonny"
return input_and_test()
else:
print 'Great, now lemme check'
return inputt
inputt = input_and_test()
input_lenght = len(inputt)
input_lenght = int(int(input_lenght) - 1)
last_number = inputt[input_lenght]
if input == 1:
print 'Even'
elif last_number == 0 or last_number == 2 or last_number == 4 or last_number == 6 or last_number == 8:
print 'Even'
else:
print 'Odd'
在上面的代码中,我只留下了变量名,名称input
在两个地方使用。但这可能会让您感到困惑,因为函数内部的input
与函数外部的input
不是同一个变量。因此,我会将函数内部的变量重命名为不同的名称(就个人而言,我喜欢使用名称result
表示“此函数最终将返回的值”),这样您就更容易看到发生了什么:
def input_and_test():
print "Gimme something and it better be a number or shit ain't gon work"
result = raw_input()
result = str(result)
try:
input_data_type = int(result)
except ValueError:
print "Yeah that sure as hell ain't a number, sonny"
return input_and_test()
else:
print 'Great, now lemme check'
return result
inputt = input_and_test()
input_lenght = len(inputt)
input_lenght = int(int(input_lenght) - 1)
last_number = inputt[input_lenght]
if input == 1:
print 'Even'
elif last_number == 0 or last_number == 2 or last_number == 4 or last_number == 6 or last_number == 8:
print 'Even'
else:
print 'Odd'
现在,两个不同的变量有两个不同的名称
现在,您看到我在函数中有两个不同的
return
语句了吗?您是否清楚为什么,或者您是否需要我在这个答案上展开,以解释为什么需要return input\u and\u test()
行?您必须从函数返回值
在输入和测试的末尾添加:
return inputt
然后,在调用输入和测试的每个地方,存储以下值:
inputt = input_and_test()
您必须这样做,因为input
是input\u和
中的局部变量,因此每次调用该函数时,都会在其内部创建一个新的input
变量。一旦函数退出,该变量就会消失。您必须从函数返回值
在输入和测试的末尾添加:
return inputt
然后,在调用输入和测试的每个地方,存储以下值:
inputt = input_and_test()
您必须这样做,因为input
是input\u and\u test
内部的局部变量,因此每次调用该函数时,都会在其内部创建一个新的input
变量。函数退出后,该变量就消失了。函数中定义的变量在函数外部不可见,除非您使用global
。您应该尽量避免使用全局变量。函数应该从参数中获取输入,并使用return
将数据返回给调用方。请确保使用正确的缩进发布代码。由于Python使用缩进解析代码的结构,因此我们需要了解如何将代码缩进到下面站起来,读变量“scope”谢谢,那么你建议我怎么做?将所有内容都放在一个主函数中,这样变量就已经是“全局的”,但我仍然可以在这一个函数之后添加一些内容?代码也正确缩进,这里是一个粘贴框:函数中定义的变量在函数外部不可见,除非你用全局
声明它们。你应该尽量避免使用全局变量。函数应该从参数中获取输入,并使用return
将数据返回给调用方。请确保使用正确的缩进来发布代码。由于Python使用缩进来解析代码的结构,我们需要看一下如何缩进代码以理解它。请阅读变量“范围"谢谢,那么你建议我怎么做?将所有内容都放在一个主函数中,这样变量就已经是“全局的”,但我仍然可以在这个函数之后添加一些内容?代码也正确缩进,这里是一个粘贴箱:正如我在回答中指出的,还有一个地方他需要一个return
语句
他递归的块也需要一个return
语句,否则如果except
块运行过,他将隐式返回None
。@rmun实际上,如果他在except中存储到input
,然后在末尾返回input
,然后它仍然有效。这就是我的想法。但是你的解决方案