在if状态下更改等效值

时间:2018-10-14 08:05:18

标签: python python-3.x

这是我的代码:

com=input('> ')
while True:
    if com=='say':
        print('1')
        com=input('> ')
    if com=='change':
        global change_com
        change_com=input('changeing_say_to: ')
        change_com='say'
        com=input('> ')

我想要的结果是,在change_com=input('changeing_say_to: ')之后,change_com变成say以外的东西,例如NAME,然后当我给出NAME而不是将say设为com的值,它将进入if com=='say'状态。我该怎么办?

这里是目标:

        > say
        1
        > change
        changeing_say_to: NAME
        > NAME
        1

2 个答案:

答案 0 :(得分:1)

这是一种解决方案:

value='say'
while True:
    com = input('> ')
    if com == value:
        print('1')
    elif com == 'change':
        value=input('changeing_say_to: ')

答案 1 :(得分:1)

您可以将其与change_com的当前值进行比较,而不是与硬编码的say进行比较-并将嵌套的input("> ")调用移至while循环的开始。还提供一种退出循环的方法(在Ctrl-C旁边):

change_com = "say"

while True:
    com = input('> ')
    if com == change_com:
        print('1')
    elif com == 'change':
        change_com = input('changing {} to: '.format(change_com))
    elif com == "break":
        break

您可以使用字符串格式的参数来调整消息,以使其与change_com中当前位于的内容匹配。

请参见str.format(..)

输出:

> say
1
> say
1
> change
changing say to: tut
> tut
1
> tut
1
> change
changing tut to: lol
> lol
1
> break