所以我有一个多层次的问题。我正在努力尝试打印输出杰克'如果raw_input是' jack'并减去尝试'按1,然后再次运行该功能并打印出“尝试”的数量。在第一个' if'声明和其他'声明,如果raw_input不是' jack'它增加了1次尝试'如果'尝试'共有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时,它会打印并停止'或运行任何命令。我想基本上保持代码运行并控制'尝试'根据输入是否是' jack'或者是其他东西。因为即使我创建了一个更简单的代码,如下所示:
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
输入' jack'我想要:
input username jack
jack -1 success
input username jack
jack -2 success
input username jack
jack -3 success
input username jack
jack -4 success
等等。任何帮助深表感谢。我不确定我做错了什么。它似乎只是尝试'不断重置自己。
希望这很清楚......我花了很多时间尝试编写代码,以便能够向有更多知识的人展示我可能误解的地方......
谢谢你们和gals。
答案 0 :(得分:0)
这是我提出的,不需要循环
#!python3
from os import sys
def usrinfo(tries):
name = input('input name: ')
if tries == 4:
print('end of program because tries equals 4')
sys.exit()
elif name == 'jack':
tries -= 1
print('input was jack')
print('tries ' + str(tries) + '\n')
usrinfo(tries)
elif name != 'jack':
tries += 1
print('tries ' + str(tries) + '\n')
usrinfo(tries)
usrinfo(0) # 'tries' will be initialized to zero
答案 1 :(得分:0)
当您进行用户输入时,它会存储在名称变量中,因此您需要使用' name'不是'元素'。然后在检查条件后调用该函数
if tries == 4:
print('stopped')
return
usrinfo()
这是正确的代码:
tries = 0
def usrinfo():
global tries
name = raw_input('input name ')
a = ('jill','jack','meg')
#to check the input against the strings of list a go for
#if name in a:
if name == 'jack':
print('input was jack')
tries =-1
print(tries)
usrinfo()
else:
tries+=1
print(tries)
if tries == 4:
print('stopped')
return
usrinfo()
usrinfo()