2013-07-16 49 views
1

我在Python语句中遇到了麻烦。我在杜兰讲完整个“游戏”,原谅拼写,这意味着幽默的态度。抱歉。原始输入if语句Python

下面是代码:

import time 

def menu(): 
    print ("dogz r a supar hahrd tin 2 matsr it tak yrs 2 mastr ut u nw git 2 exprince it. pik a tin 2 du:\n") 
    menu = raw_input("1.)Ply Da Dogi gam\n2.)Halp\n") 

    if menu == 1: 
     game() 

    if menu == 2: 
     helpGame() 

    if menu < 2: 
     print ("dat not 1 ur 2 sry") 
     time.sleep(1) 
     menu() 

def game(): 
    print ("nuw u ply mi gme u lke it") 

def helpGame(): 
    print ("dis da halp u liek it") 
menu() 

这并不为我工作,我从未有过直接的函数调用的if语句,我不得不实施“赛格方式”,它调用内部工作功能。

这是否适合您?它可能是我的Python安装吗?谢谢!

+4

*这对我不起作用* - 您需要比这更详细。值得指出的是'raw_input'返回一个字符串 - 并且你可能需要'int(..)'和那个...'如果菜单<2'也会执行'if menu == 1' ...想想看如果条件应该是相互排斥的,则使用'elif'语句...除此之外 - 不知道你在做什么之后... –

+1

作为一个附注,从'menu'递归调用'menu'这样的方法通常是不好的理念。最好把它写成一个循环,在有效的答案中你可以“打破”或“返回”,而不是一个在无效答案上调用自己的函数。 – abarnert

回答

1

raw_input()返回一个字符串,您使用的是你的if语句一些,改变这一行:

menu = raw_input("1.)Ply Da Dogi gam\n2.)Halp\n") 

这样:

menu = int(raw_input("1.)Ply Da Dogi gam\n2.)Halp\n")) 

你将要在处理错误条件看接下来虽然。

+0

谢谢!我教自己蟒蛇,并不知道这一点。这样的生活品味! (注意,我只是做了if语句,如果菜单==“1”...它工作得很好。) 干杯队友! –

+0

你正在通过改变从int到字符串的比较来做相反的事情,但这不适用于'if menu <2',这就是为什么我使用int()方法:) –

+0

@JasonSperske:其实,'“1”<“2”'和'1 <2'一样,所以这不成问题。但这并不意味着没有问题:只要你有9个条目,'“10”<“9”'也是真的,你可能不希望这样......显然你的方法更好,这只是解释为什么它很明显的问题。 :) – abarnert

2

随着您添加更多选项,if语句变得不实用。改为使用这种基于字典的结构。

def menu(): 
    print ("dogz r a supar hahrd tin 2 matsr it tak yrs 2 mastr ut u nw git 2 " 
      "exprince it. pik a tin 2 du:\n") 
    prompt = "1.)Ply Da Dogi gam\n2.)Halp\n" 
    {'1': game, '2': helpGame}.get(raw_input(prompt), menu)() 
+0

我认为将函数表词典放入变量而不是调用文字上的方法会更清楚(至少对于新手来说),并且可能还会将'raw_input'的结果保留在变量中。 – abarnert