python 标志法-优化版(数值判断[正负])、非空判断、退出判断)
在这个程序中,我们使用了一个标志来指出程序是否处于活动状态,这样如果要添加测试(如elif 语句)以检查是否发生了其他导致quit_msg2变为False 的事件,将很容易。
在复杂的程序中,如很多事件都会导致程序停止运行的游戏中,标志很有用:在其中的任何一个事件导致活动标志变成False 时,主游戏循环将退出,此时可显示一条游戏结束消息,并让用户选择是否要重新玩。
# 标志退出法 将退出程序的条件交给其他语句
def print_input_test():
quit_msg2 = True # 退出标志,True:运行;False:退出
while quit_msg2:
quit_msg2 = input("请输入一个数字:(输入quit退出程序)\n")
# 输入不为空
if quit_msg2.strip() != '':
# 输入为quit,直接退出程序
if quit_msg2.strip() == 'quit':
quit_msg2 = False # 退出程序
# 输入不为quit,调用函数判断输入是否为数字
elif isInt(quit_msg2):
# 输入为数字,判断是否为3的整数倍,并打印出结果
if int(quit_msg2) % 3 == 0:
print(quit_msg2, "是3的整数倍")
else:
print(quit_msg2, "不是3的整数倍")
# 输入不为数字,提示重新输入
else:
print("你输入的不是数字,请重新输入!\n")
else:
# 如果输入为空,继续循环
quit_msg2 = True
# 判断一个值 是否是数字(包含正负)
# 思考为何不用isnumeric() 、isdigit() 判断输入值
def isInt(number):
try:
number=int(str(number)) # 转换为int类型
return isinstance(number,int) #判断是否为int类型,如果是,返回True
except:
return False # 非Int类型,返回False
if __name__ == '__main__':
print_input_test()