【发布时间】:2023-04-02 01:06:01
【问题描述】:
所以我有一个多层次的问题。我正在尝试如果 raw_input 是“jack”并且将“tries”减去 1,我试图仅打印出“input was jack”,然后再次运行该函数并在末尾打印出“tries”的数量第一个“if”语句和“else”语句,如果 raw_input 不是“jack”,它会将 1 添加到“tries”,如果“tries”总共达到 4,则函数打印停止。我遇到了几个不同的问题。要么计数器似乎每次都重置,所以它总是只有“1”,或者我不能继续运行该功能。它似乎并没有遵循我认为的“如果或其他”理论。所以我有以下代码:
tries = 0
def usrinfo():
name = raw_input('input name ')
a = ('jill','jack',name,'meg')
for element in a:
if element == 'jack':
print('input was jack')
tries =-1
print(tries)
usrinfo()
else:
if element != 'jack':
tries =+ 1
return tries
print(tries)
usrinfo()
if tries == 4:
print('stopped')
usrinfo()
如果我输入“jack”,我会得到:
Nothing...as in a blank output
我想要:
input was jack
-1
然后我希望函数再次运行......并得到
input was jack
-2
等等。
如果我输入除“jack”以外的任何内容,我会得到:
Nothing...as in a blank output
我想得到:
1
然后让函数再次运行....并得到
2
然后,如果我输入除“jack”以外的任何内容。我希望每次尝试打印从 1 到 4 的不断增加的尝试级别,如下所示:
1
2
3
4
然后当它达到 4 时,它会打印 'stopped' 或运行任何命令。我想基本上保持代码运行并根据输入是“jack”还是其他东西来控制“tries”的值。因为即使我创建了这样一个更简单的代码:
def userinput():
tries = 0
username = raw_input('input username ')
if username == 'jack':
tries -=1
print(username + ' '+ str(tries) + ' success')
userinput()
else:
if username != 'jack':
tries +=1
print('tries ' + str(tries))
userinput()
userinput()
我在这段代码上输入“f”的结果是:
input username f
tries 1
input username f
tries 1
input username f
相反,我想得到:
input username f
tries 1
input username f
tries 2
input username f
tries 3
我想要输入“杰克”:
input username jack
jack -1 success
input username jack
jack -2 success
input username jack
jack -3 success
input username jack
jack -4 success
等等。任何帮助深表感谢。我不确定我做错了什么。似乎“尝试”在不断地自我重置。
希望这很清楚...我花了很多时间尝试编写代码,以便能够向更了解我的误解的人展示...
谢谢大家。
【问题讨论】:
-
你的 else 语句需要与 if 语句对齐,而不是与 for 循环在同一缩进上
-
另外,在第二个代码块中...是的,您再次调用该函数,并重置一个新的
tries = 0。请使用while循环。永远不要在其内部调用函数。 (这称为递归,在这种简单的情况下重复一个动作是一种不好的方式) -
还有一个
else子句用于for-loop -
@NickolasKent 你在找
break吗? -
@abarnert 是的!我想到了。我很新,所以我试图避免“这在这里工作得很好,所以让我把它扔到任何地方”模式,但我想这只是一个典型的代码片段,如果你想完成我正在尝试的事情完成。
标签: python python-2.7 for-loop if-statement