Rez*_*zic 0 python function exit quit
好吧,所以我已经尝试了一段时间了,一旦它运行,我似乎找不到关闭程序的方法.
我想要它做的是如果用户选择'no'以下结束程序:
elif y == 'n' or 'no':
sys.exit(0)
Run Code Online (Sandbox Code Playgroud)
无论我选择什么,都会将程序返回给partOne函数.我尝试过不同的尝试来解决这个问题,比如搬家
partOne()
Run Code Online (Sandbox Code Playgroud)
从程序结束到两个函数之间但是不起作用,因为那时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()
Run Code Online (Sandbox Code Playgroud)
尝试 y == 'n' or y =='no'
代替 y == 'n' or 'no'
>>> y = 'anything'
>>>
>>> bool(y == 'n' or 'no')
True
Run Code Online (Sandbox Code Playgroud)
你的陈述总是回来True.相反,检查y == 'no'只是检查'no',任何转换在python为bool是True如果它不是None,False或0.
在字符串的情况下,和其他iterables它,如果它不是空的,例如返回True '',[],{},()将始终返回False.
或者正如Foo Bar用户所说,if y.lower() in ('n', 'no')也会这样做.lower()将确保匹配不区分大小写.