-1

我对 Python 很陌生,正在尝试使用各种在线资源自学一些东西。在关于算法的维基百科文章中,有一个示例 BASIC 程序;我决定尝试使用 Python 编写相同的程序,但我遇到了 if/else 语句的语法问题。我很确定这是一个基本的格式问题,但我没有足够的编码经验来理解我做错了什么。以下代码块:

# Euclid's algorithm for greatest common divisor

print "Euclid's algorithm for greatest common divisor"

print "Type two integers greater than 0"
("\n")
("\a")

# Gather input from user in the form of a string. 

("\n")
a = raw_input("Integer 1? ")
("\n")
b = raw_input("Integer 2? ")
("\n")

# Calculate equalities.

if b = 0:
    print a

elif a > b:
a = a - b
print a

b = b - a

if b = 0:
print a

返回错误:

  File "euclid.py", line 35
    if b = 0:
         ^
SyntaxError: invalid syntax

我意识到整个模块是不完整的,但我想在继续下一部分之前弄清楚我在这部分做错了什么。

4

4 回答 4

4

两个问题:

if b = 0: # this is assignment; you want == which is comparison
    print a

elif a > b:
a = a - b # this needs to be indented just like the print under the if clause
于 2013-07-22T19:23:00.443 回答
2

您正在使用要测试相等性的分配。使用两个 =标志:

if b == 0:

b = 0是赋值语句,不能在其他语句中使用语句;b == 0测试是否b等于 0。

于 2013-07-22T19:21:45.117 回答
2
  1. = 是赋值(如x=4,表示set x=4)。== 是相等检查。你想要==。
  2. python需要缩进。

因此

if True:
print 'happy'`

是语法错误,而

if True:
  print 'happy'

没关系。

  1. 严格来说,这不是语法错误,但是("\n")您的代码中的语句是做什么用的?目前他们什么都不做。
于 2013-07-22T19:23:38.703 回答
0

对于大多数编程语言,相等性检查由双等号表示,意思是检查它们是否相等并返回 true/1 或 false/0。这是因为您需要区分询问两件事是否相等和陈述关系。

所以使用 == 而不是 =

于 2013-07-22T19:26:48.587 回答