输入'Add‘时,第7行的代码可以工作。但是,当输入'View‘提示符时,第7行的代码会不断重复。这是我的密码存储程序
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')发布于 2022-10-25 05:02:00
我不知道你说的是什么
输入'Add‘时,第7行的代码可以工作。但是,当输入'View‘提示符时,第7行的代码会不断重复。
因为所有选项(add、view和其他字符串)都不会让程序在我的测试中停留在循环中,第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']会很好,但是我会用
if action == 'add':
# do something
elif action == 'view':
# do something
else:
# end the program相反,这更好海事组织。
顺便说一下,在Python中引入了match-case (链接到文档),这种情况肯定是使用它的最佳时机。
match action:
case 'add':
# do something
case 'view':
# do something
case _:
# end the program试试看。
发布于 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:埃利夫
因为如果上面的选项是真的话,代码就不会运行。
希望它能帮到你。
https://stackoverflow.com/questions/74188996
复制相似问题