Python CTRL-C退出没有回溯?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python CTRL-C退出没有回溯?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2287字,纯文字阅读大概需要4分钟。
内容图文
![Python CTRL-C退出没有回溯?](/upload/InfoBanner/zyjiaocheng/752/099648457aee42f888c4c5175fcfa613.jpg)
为学习目的构建一个简单的“Rock,Paper,Scissors”Python游戏.
我已经阅读了一些关于退出Python而没有回溯的其他帖子.我正在尝试实现它,但仍然得到追溯!有些Python wiz可以指出这个Python假人有什么不对吗?想法是单击RETURN(或键入“yes”或“y”将使程序再次运行play(),但是按CTRL-C将关闭它而没有回溯.我使用的是Python 2.7.
# modules
import sys, traceback
from random import choice
#set up our lists
ROCK, PAPER, SCISSORS = 1, 2, 3
names = 'ROCK', 'PAPER', 'SCISSORS'
#Define a function for who beats who?
def beats(a, b):
return (a,b) in ((PAPER, ROCK), (SCISSORS, PAPER), (ROCK, SCISSORS))
def play():
print "Please select: "
print "1 Rock"
print "2 Paper"
print "3 Scissors"
# player choose Rock, Paper or Scissors
player_choice = int(input ("Choose from 1-3: "))
# assigns the CPU variable a random CHOICE from a list.
cpu_choice = choice((ROCK, PAPER, SCISSORS))
if cpu_choice != player_choice:
if beats(player_choice, cpu_choice):
print "You chose %r, and the CPU chose %r." % (names[player_choice - 1], names[cpu_choice - 1])
print "You win, yay!!"
else:
print "You chose %r, and the CPU chose %r." % (names[player_choice - 1], names[cpu_choice - 1])
print "You lose. Yuck!"
else:
print "You chose %r, and the CPU chose %r." % (names[player_choice - 1], names[cpu_choice - 1])
print "It's a tie!"
print "Do you want to play again? Click RETURN to play again, or CTRL-C to exit!"
next = raw_input("> ")
# THIS IS WHAT I'M WORKING ON - NEED TO REMOVE TRACEBACK!
if next == "yes" or "y":
try:
play()
except KeyboardInterrupt:
print "Goodbye!"
except Exception:
traceback.print_exc(file=sys.stdout)
sys.exit(0)
elif next == None:
play()
else:
sys.exit(0)
# initiate play() !
play()
解决方法:
你调用play()两次,所以你需要将两个case放在try / except块中:
if next in ("yes", "y"):
try:
play()
except KeyboardInterrupt:
print "Goodbye!"
except Exception:
traceback.print_exc(file=sys.stdout)
sys.exit(0)
elif next is None:
try:
play()
except KeyboardInterrupt:
print "Goodbye!"
except Exception:
traceback.print_exc(file=sys.stdout)
sys.exit(0)
else:
sys.exit(0)
我已经纠正了另外两个问题,最好在python中测试None,而你的第一个if测试不起作用,因为next ==“yes”或“y”被解释为next ==“yes “与”y“分开,与之间或之间. “y”始终被视为True,因此您永远不会来到代码中的其他分支.
请注意,我怀疑上面的代码可以简化得更多,但你根本没有告诉我们你的play()函数,所以你让我们猜测你想要做什么.
内容总结
以上是互联网集市为您收集整理的Python CTRL-C退出没有回溯?全部内容,希望文章能够帮你解决Python CTRL-C退出没有回溯?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。