首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >while循环中if语句的问题

while循环中if语句的问题
EN

Stack Overflow用户
提问于 2022-10-25 04:01:15
回答 2查看 48关注 0票数 0

输入'Add‘时,第7行的代码可以工作。但是,当输入'View‘提示符时,第7行的代码会不断重复。这是我的密码存储程序

代码语言:javascript
复制
import string

master_pass = input('Lost in Soul Sand be everything, but the KEY! \n')

while master_pass == 'Soul':
    action = input('Add/View Soul?').lower()

    if action == 'add':
        U = input('Soulname: ')
        P = input('Soul Sand: ')
        with open('sandvalley.txt','a') as f:
            f.write( U + '|' + P + '\n')
            print('Souls saw the light')

    if action == 'view':
        with open('sandvalley.txt','r') as narrate:
            narrate.readlines()
            for row in narrate:
                print(row)

    if action != 'add' or 'view':
        print('Soul has left the storm')
        break

print ('End')
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-10-25 05:02:00

我不知道你说的是什么

输入'Add‘时,第7行的代码可以工作。但是,当输入'View‘提示符时,第7行的代码会不断重复。

因为所有选项(addview和其他字符串)都不会让程序在我的测试中停留在循环中,第7行是空行。

但是我知道如果你想用变量action来控制程序,那么if action != 'add' or 'view:肯定不是你要找的人。

if action != 'add' or 'view':成功地做的是if (action != 'add') or ('view'):,这意味着如果变量动作是而不是 'add' 'view',那么就会出现所谓的真值检验。根据文档,任何长度不是零的字符串都被认为是True,因此条件表达式总是True,结束过程总是要完成的。

如果你想修复它,if action not in ['add', 'view']会很好,但是我会用

代码语言:javascript
复制
if action == 'add':
    # do something
elif action == 'view':
    # do something
else:
    # end the program

相反,这更好海事组织。

顺便说一下,在Python中引入了match-case (链接到文档),这种情况肯定是使用它的最佳时机。

代码语言:javascript
复制
match action:
    case 'add':
        # do something
    case 'view':
        # do something
    case _:
        # end the program

试试看。

票数 0
EN

Stack Overflow用户

发布于 2022-10-25 04:40:15

.readlines()函数返回一个值,因此您希望保存在变量( insted of如narrate.readlines() )中,例如narrate = narrate.redlines()。那应该管用。让我知道,如果它有效,我已经试过了,我认为它很好:代码 OutPut

此外,您还可以添加如下内容:ForCodeRepeat,这使您的代码重复,而您的输入是!= add和view。

代码放置操作的方式不起作用,因为如果输入“视图”,条件操作!=‘add’或'view‘将为真,因为“视图”!= add。如果您的输入是"add“,则条件将再次为true,因为"add”=视图。这就是您想要使用的原因,并且当您的输入不是其中之一时,您希望代码停止。

另一种解决方案是使用elif:埃利夫

因为如果上面的选项是真的话,代码就不会运行。

希望它能帮到你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74188996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档