0

这是我在 Python 3.3.0 中的计算器 这是我的程序...

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(a)。')' 导致上述错误。请帮忙。我查看了http://code.google.com/hosting/search?q=label%3aPython并没有提供有关扫描错误原因的信息。

4

1 回答 1

2

假设您在此处发布的代码与您正在运行的代码相同,则实际问题更早,在第 13 行:

    8. Nothing but quit!\n\'

您永远不会关闭menu字符串,因为\'它不是字符串关闭引号,它是字符串中的文字字符。

事实上,当我运行它时,我得到:

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

如果我解决了这个问题(通过删除多余的反斜杠),一切都运行良好——包括除法情况,这是第 26 行出现的地方。

因此,如果这不是您的实际错误,那么您显然已经解决了真正的问题并在此处粘贴代码的过程中添加了一个新问题……</p>

正如 Jakob Bowyer 所指出的,SO 语法高亮器实际上发现了同样的问题——例如,请注意第 14 行 ( y=int(input(menu))) 被高亮显示为字符串文字的一部分,而不是代码。如果你自己使用了一个不错的编辑器,if 会做类似的事情。

This is one reason you always want to use real multiline strings, rather than faking them with backslash continuation. (Another reason is that at some point, you will put a space after the backslash, which will break your code, despite being completely invisible to you. Then there's the fact that some syntax highlighters, and all human beings, get confused by backslash continuations in strings…)

于 2012-12-06T20:50:02.207 回答