2012-08-06 90 views
-3

我试图创建一个程序来创建一个questionaiire,最终返回信息的用户输入。这里是我的代码:Python:改变raw_input?

。防守questionaiire:

>>. Loop = 0 
>> 
>> While loop != 1: 

>>  Print "A: name" 

>>  Print "B: age" 

>>  Print "B: Favorite color". 

>>  Zen = raw_input("choose a, b, or c") #my problem line 

>>  If zen == "a" or "A": 

>>  A = raw_input("Input your name: ") 

>>.  Elif zen == "b" or "B": 

>>.  B = raw_input:("Input your age: ") 

>>.  Elif zen == "C" or "c": 

>>  C = raw_input("Input your favorite color") 

>>  Else: 

>>  Print A, B, C 

>>  Break 

的结束位是有点更复杂,但本质上这就是我的职责。帮帮我? 我也试过在if和elifs之后插入return,但是这让程序卡住了(couldnt input),所以我将它们取出了

+3

请按照您在脚本中的方式完全格式化代码。否则,如果有人想帮助你,首先需要为你解决它。 – Tadeck 2012-08-06 08:23:08

回答

7

代码中有许多语法错误。

  • 不得利用defwhileprintifelifelsebreak,或任何其他python keyword,他们必须全部小写。

  • 您需要在变量名称的大小写中保持一致。 Zenzen是两个不同的变量!

  • 您必须在函数的名称后括号放,就像这样:def questionaiire():

  • 在此行期间是一个语法错误。去掉它。

    print "B: Favorite color". 
    
  • 在这条线以下raw_input结肠是语法错误。去掉它。

    B = raw_input:("Input your age: ") 
    
  • 我不知道>> s的每一行的开始是什么,我相信它不是实际的源代码的一部分。如果是,则在行首开始删除所有发生的>

  • 此行不会做你认为它的作用:

    if zen == "a" or "A": 
    

    它的解释是这样的:

    if (zen == "a") or "A": 
    

    所以它总是如此,因为"A"评估为True。把它写这样的而不是:

    if zen.lower() == "a": 
    

这里的工作的例子。我尽可能少地修改了代码,以便于比较。

def questionaiire(): 
    a = b = c = "" 
    while True: 
     print "a: name" 
     print "b: age" 
     print "c: favorite color" 
     zen = raw_input("choose a, b, or c: ") 
     if zen.lower() == "a": 
      a = raw_input("input your name: ") 
     elif zen.lower() == "b": 
      b = raw_input("input your age: ") 
     elif zen.lower() == "c": 
      c = raw_input("input your favorite color: ") 
     else: 
      print a, b, c 
      break 

您从未使用过loop变量,所以我删除了它。由于您使用的是break,因此在此代码示例中并不需要它。

你做了写这篇简短的代码错误的数量和种类表明您会真的从编程更多的Python或要求进一步蟒蛇相关问题之前,通过至少python tutorial的前几章读书的好处在这个网站上。