对于if if else语句

时间:2018-03-17 02:50:11

标签: python python-2.7 for-loop if-statement

所以我有一个多层次的问题。我正在努力尝试打印输出杰克'如果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。

2 个答案:

答案 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()