【发布时间】:2015-12-01 15:58:23
【问题描述】:
编辑: 好的,经过这里每个人的一些输入,我设法使它工作!我简化了很多以摆脱长链。这是我所拥有的:
def main():
var = (raw_input("Enter an integer: "))
a = get_number(var)
if a != False:
switch = by_three(int(a))
if switch == True:
return
else:
print "Try again!"
main()
else:
main()
def get_number(parameter):
if parameter.isdigit():
return parameter
else:
print "No, I said an INTEGER. \"%s\" is not an integer." % parameter
return False
def by_three(placeholder):
if placeholder % 3 == 0:
print "%d is divisible by 3. Isn't that terrific." % placeholder
return True
else:
print '%d is not divisible by 3. Boo hoo.' % placeholder
return False
print "Let's find an integer divisible by 3."
main()
我有什么理由不应该在我的 else 语句中回到 main() 吗?还有其他方法可以让程序回到开头吗?
—— 我尝试构建一个简单的命令行程序来查找可被 3 整除的数字。这个想法是不断询问一个数字,直到用户选择一个可被 3 整除的数字。这是我的代码:
def main():
print "Let's find an integer divisible by 3."
var = (raw_input("Enter an integer: "))
switch = False
get_number(var, switch)
while switch != True:
print "Try again!"
main()
def get_number(parameter, nd):
if parameter.isdigit():
by_three(int(parameter), nd)
return parameter, nd
else:
print "No, I said an INTEGER. \"%s\" is not an integer." % parameter
return parameter, False
def by_three(placeholder, tf):
if placeholder % 3 == 0:
print "%d is divisible by 3. Isn't that terrific." % placeholder
return placeholder, True
else:
print '%d is not divisible by 3. Boo hoo.' % placeholder
return placeholder, False
main()
好的,这就是我认为发生的事情:变量switch 被传递给nd,它被传递给tf。如果另一个变量(var>parameter>placeholder)可以被 3 整除,则tf 的返回值为 True——这应该意味着当我用“while”对其进行测试时,该变量现在已更改。
这一定不是正在发生的事情——有人能解释一下我是如何对事情产生如此严重的误解的吗?在函数周围传递变量(并返回它们!)让我很困惑。
【问题讨论】:
-
为什么您认为您的代码不起作用?我用正面和负面的测试用例运行它,它通过了:让我们找到一个能被 3 整除的整数。输入一个整数:3 3 能被 3 整除。这不是很棒吗。再试一次!让我们找到一个能被 3 整除的整数。输入一个整数:6 6 能被 3 整除。这不是很好。再试一次!让我们找到一个能被 3 整除的整数。输入一个整数:5 5 不能被 3 整除。嘘。再试一次!让我们找到一个能被 3 整除的整数。输入一个整数:
-
@ShawnMehan 哦,是的,我想我并不清楚。我希望程序继续要求更多的数字,直到有一个可以被三整除。一旦有一个可以被三整除的数字,它就应该结束。