当前位置: 首页 > 面试题库 >

打破功能的while循环?

王宏扬
2023-03-14
问题内容

我正在尝试制作一个具有if / elif语句的函数,并且我希望if中断while循环。该函数用于文本冒险游戏,是/否的问题。到目前为止,这是我想出的。

def yn(x, f, g):
    if (x) == 'y':
         print (f)
         break
    elif (x) == 'n'
         print (g)

name = raw_input('What is your name, adventurer? ')
print 'Nice to meet you, '+name+'. Are you ready for your adventure?'

while True:
    ready = raw_input('y/n ')
    yn(ready, 'Good, let\'s start our adventure!', 
       'That is a real shame.. Maybe next time')

现在我不确定我是否正确使用该功能,但是当我尝试一下时,它说我不能中断该功能。因此,如果有人可以帮助我解决该问题,并且如果函数和调用函数本身的格式错误,则可以帮助我,将不胜感激。


问题答案:

您可以例外处理:

class AdventureDone(Exception): pass

def yn(x, f, g):
    if x == 'y':
         print(f)
    elif x == 'n':
         print(g)
         raise AdventureDone

name = raw_input('What is your name, adventurer? ')
print 'Nice to meet you, '+name+'. Are you ready for your adventure?'

try:
    while True:
        ready = raw_input('y/n ')
        yn(ready, "Good, let's start our adventure!",
           'That is a real shame.. Maybe next time')
except AdventureDone:
    pass
    # or print "Goodbye." if you want

这样while一遍又一遍地循环,但是在yn()函数内部引发了一个异常,该异常打破了循环。为了不打印回溯,必须捕获并处理异常。



 类似资料:
  • 问题内容: 有什么方法可以使用函数打破无限循环吗?例如, 这将导致以下错误: 请说明为什么会发生这种情况以及如何解决。 问题答案: 就我而言,您不能从内部调用break,但是可以使其返回值( 例如:boolean )以停止无限循环 编码:

  • 问题内容: 我不太擅长SQLServer2000。我有一个用逗号分隔的ID列表。我需要查看该ID是否存在于表中。如果是这样,我想打破这个循环,将ID保存在一个可以在存储过程中使用的变量中。这就是我现在正在尝试的方法: 谢谢! 问题答案: 理想情况下,您不应该使用游标,因为性能不会很高。如果您可以将其作为基于集合的语句来执行,请改为这样做,也许是这样的: 但是,如果确实有理由使用游标,则可以使用BR

  • 问题内容: 我是python的新手,但收到一条错误消息,指出 打破循环 我知道一个中断只能在一个循环中使用,但是实际上我不知道何时确定循环何时结束。 我如何通过将中断放置在正确的位置来解决此错误(如果这是引起问题的原因)? 码: 问题答案: 在python中用于循环内。定位循环应该很容易,因为python代码需要适当缩进。您的代码在循环外,在try块中。继续的情况与此类似。 我不确定逻辑,但是可以

  • 问题内容: 注意:此问题仅供参考。我很想知道这样做有多深入到Python内部。 不久前,在某个问题的内部开始了一个讨论,该问题涉及传递给print语句的字符串是否可以在调用to之后/期间进行修改。例如,考虑以下功能: 现在,当运行时,到终端的输出应显示: 请注意,单词“ cat”已被单词“ dog”代替。某处某种方式能够修改这些内部缓冲区以更改打印的内容。假设这是在没有原始代码作者明确许可的情况下

  • 很好的一天!我面临着编写将代理分配到SelectOutputOut块的函数的挑战。考虑到使用if的各种场景。。。函数中的else语句我理解必须涵盖所有可能性(如此处所建议)。然而,问题是,我不希望代理在获得适当的SelectOutputOut块之前离开该函数。如果任何服务块(Network1、Network2或Network3)中没有足够的资源,则可能会出现这种情况。在这种情况下,需要等待任何服务

  • 大家好,我被一个问题困住了,想不出解决办法。我使用的是while循环,do while循环和for。我知道我的前两个while循环是正确的,我试图完成的是让我的do while循环和for语句打印出与我的第二个while循环相同的东西。 输入要打印的消息? 你好 输入要打印邮件的次数。输入1-20之间的值: 5 使用do-while循环输出... 第6.0行-你好 do-while循环中的时间..