2012-12-06 82 views
0

这是我在Python 3.3.0 计算器这是我的计划......语法错误:EOL同时扫描字符串字面量的Python计算器

import random 
import math 
a=int(input('Please enter your first number!: ')) 
x=int(input('Please enter your second number!: ')) 
menu='So what do you want me to do with these numbers? (Ps. Only put in the number)\n\ 
    1. Do you want me to add the numbers together?\n\ 
    2. Do you want me to subtract the numbers?\n\ 
    3. Do you want me to multipy the numbers?\n\ 
    4. Do you want me to divide the numbers?\n\ 
    5. Do you want me to square the numbers?\n\ 
    6. Do you want me to put one number to the power of the other?\n\ 
    7. Do you want me to square root both numbers?\n\ 
    8. Nothing but quit!\n\' 
y=int(input(menu)) 
if y==1: 
    print(str(a)+' + '+str(x)+' = '+str(a+x)) 
elif y==2: 
    c=int(input('Which number will you subract from? 1. '+str(a)+' or 2. '+str(x)+'? (Remember only put 1 or 2) ')) 
    if c==1: 
     print(str(a)+' - '+str(x)+' = '+str(a-x)) 
    elif c==2: 
     print(str(x)+' - '+str(a)+' = '+str(x-a)) 
elif y==3: 
    print(str(a)+' x '+str(x)+' = '+str(a*x)) 
elif y==4: 
    d=int(input('Which number will you divide from? 1. '+str(a)+' or 2. '+str(x)+'? (Remember only put 1 or 2) ')) 
    if d==1: 
     print(str(a)+' ÷ '+str(x)+' = '+str(a/x)) 
    elif d==2: 
     print(str(x)+' ÷ '+str(a)+' = '+str(x-a)) 
elif y==5: 
    b=int(input('Which number do you want to square? 1. '+str(a)+' or 2. '+str(x)+'? (Remember only put 1 or 2) ')) 
    if b==1: 
     print(str(a)+' x '+str(a)+' = '+str(a*a)) 
    elif b==2: 
     print(str(x)+' x '+str(x)+' = '+str(x*x)) 
elif y==6: 
    e=int(input('Which number do you want to put the power to? 1. '+str(a)+' or 2. '+str(x)+'? (Remember only put 1 or 2) ')) 
    if e==1: 
     print(str(a)+' to the power of '+str(x)+' = '+str(a**x)) 
    elif e==2: 
     print(str(x)+' to the power of '+str(a)+' = '+str(x**a)) 
elif y==7: 
    f=int(input('Which number do you want to square root? 1. '+str(a)+' or 2. '+str(x)+' or 3. Both or 4. Pick random? (Remember only put 1, 2, 3 or 4) ')) 
    if f==1: 
     print('The square root of '+str(a)+' is '+sqrt(a)) 
    elif f==2: 
     print('The square root of '+str(x)+' is '+sqrt(x)) 
    elif f==3: 
     print('The square root of '+str(a)+' is '+sqrt(a)+' and the square root of '+str(x)+' is '+sqrt(x)) 
    elif f==4: 
     print('Let me see! I pick...') 
     g=random.randint(1,3) 
     if g==1: 
      print('The square root of '+str(a)+' is '+sqrt(a)) 
     elif g==2: 
      print('The square root of '+str(x)+' is '+sqrt(x)) 
     elif g==3: 
      print('The square root of '+str(a)+' is '+sqrt(a)+' and the square root of '+str(x)+' is '+sqrt(x)) 
elif y==8: 
    print('Bye!!!') 
elif y==69: 
    print('Very mature!') 
else: 
    print('No command selected. Self destruction in T-10 seconds. 10... 9... 8... 7... 6... 5... 4... 3... 2... 1... 0... BOOM!') 
    exit() 

这是给我26号线的问题,它说+ STR (一个)。 ')'导致上述错误。请帮忙。我曾看过http://code.google.com/hosting/search?q=label%3aPython,它并没有提供有关扫描错误原因的信息。

+0

请复制/粘贴您的错误字符串。或者至少把错误的名称和标记哪一行是26 ... – PearsonArtPhoto

+3

实际上,它似乎标记语法高亮显示错误,我认为 –

+0

我只是它说的地方+ str(a)+。 ')'给出了上面的错误。 – user1883616

回答

2

假设你张贴在这里的代码是你正在运行相同的代码,实际问题是早在第13行:

8. Nothing but quit!\n\' 

你永远不会关闭menu字符串,因为\'不是字符串-closing quote,它是字符串中的文字字符。

而事实上,当我跑,我得到:

File "calc.py", line 13 
    8. Nothing but quit!\n\' 
         ^
SyntaxError: EOL while scanning string literal 

如果我修复(除去多余的反斜杠),一切都正常运行,包括分工情况,这是在第26行过来。

所以,如果这不是你实际的错误,你显然是固定的实际问题,并添加在这里粘贴代码的过程中一个新的...

至于雅各布鲍耶指出的那样,SO语法荧光笔实际上发现了同样的问题 - 例如,请注意,第14行(y=int(input(menu)))突出显示为字符串文字的一部分,而不是代码。如果你自己使用一个体面的编辑器,如果会做类似的事情。

这是您总是希望使用真正的多行字符串的原因之一,而不是用反斜杠延续它们。 (另一个原因是,在某些时候,你会在反斜杠之后放一个空格,尽管你完全看不到你的代码,但它会破坏你的代码。然后就会出现这样的事实,即某些语法轮廓笔和所有人都被反斜杠延续困惑在字符串中...)

+0

谢谢。这工作。 – user1883616