好吧,所以我已经尝试了一段时间了,一旦它运行,我似乎找不到关闭程序的方法。
如果用户选择'no'
:
elif y == 'n' or 'no':
sys.exit(0)
然而,无论我选择什么,都会将程序返回到partOne
函数。我尝试过不同的尝试来解决这个问题,比如移动
partOne()
从程序结束到两个函数之间但不起作用,因为那时PartTwo
函数尚未定义。
感谢您的回复。
import hashlib
import sys
def partOne():
x = input("\nEnter something to hash: ")
hash_object = hashlib.sha256(x.encode())
hex_dig = hash_object.hexdigest()
print("\nPlain text: ")
print(x)
print("\nHashed text: ")
print(hex_dig)
print("\nYour password: ")
print(hex_dig[::9])
partTwo()
def partTwo():
y = input("\nDo you want to make another password? (y/n): ")
if y == 'y' or 'yes':
partOne()
elif y == 'n' or 'no':
sys.exit(0)
else:
print("\nYou need to type either 'y' or 'n'.")
partOne()
partOne()
答案 0 :(得分:6)
尝试y == 'n' or y =='no'
而不是y == 'n' or 'no'
>>> y = 'anything'
>>>
>>> bool(y == 'n' or 'no')
True
你的陈述总是返回True
。如果它不是y == 'no'
,只检查'no'
,如果它不是True
,None
或False
,那么在python中转换为bool的任何内容都是0
在字符串和其他迭代的情况下,如果它不为空,则返回True,例如''
,[]
,{}
,()
将始终返回False
。
或者正如Foo Bar用户所说,if y.lower() in ('n', 'no')
也会这样做。 lower()
将确保匹配不区分大小写。