我做错了什么,它总是突出结肠

时间:2013-09-05 07:15:11

标签: python

print('''do you wish to access this network''')
VAL= int(input("to entre please punch in the pass word: ")
if VAL is 2214 **:**
      print("welcome")
else:
      print("wrong password, please check retry")

4 个答案:

答案 0 :(得分:5)

您忘记关闭括号:

print('''do you wish to access this network''')
VAL= int(input("to entre please punch in the pass word: "))   # here!
if VAL is 2214:

如果您想比较相等,我还建议您避免使用is运算符。

is运算符比较标识(即它是相同的对象,在同一个内存位置),而==比较相等(即这些对象,根据它们的语义学,可以认为是平等的。)

使用is来测试相等性仅适用于{em>实现细节范围内[-5, 256]范围内的整数(即这些数字被缓存)。所有其他数字都失败了。


要扩展一下冒号突出显示的原因,而不是if本身:

请记住,在python中,您可以将每个表达式括在括号之间,以便将它写成多行,但是您不能将语句放在括号内。 有一个明确的distinction between statements and expressions

语句包括循环语句(forwhilebreakcontinueelse),if-elif-else,{{1} },try-except-finally,赋值with,函数和类的定义等。

表达式就是其他所有内容:name = valuea + bobject.method() ...

在您的具体示例中,解析器会看到以下行:

function_call()

这是一个作业声明。它在右侧分配VAL= int(input("to entre please punch in the pass word: ") 表达式的值。因此它解析表达式 VAL,因为此行上没有右括号,所以它继续在下一行解析。但在下一行它发现:

int(input(...) ...

这是语句,因为最后有if VAL is 2214: 冒号,表达式不能包含语句。这也是无法执行:之类的操作的原因,即在条件内进行分配。

if (a=100) < 50:本身错误,因为还存在if VAL is 2214 - 表达式(实际上称为conditional expression)。 例如,以下是有效的 python代码:

if

但是在这种情况下,必须同时指定VAL = int(input("prompt ") if n % 2 == 0 else input("different prompt ")) if,并且条件表达式中没有冒号。

答案 1 :(得分:2)

第一个错误是你忘了关闭),因为@Bakuriu指出:

VAL= int(input("to entre please punch in the pass word: "))

第二个错误是您使用is来比较数字,这是比较数字的错误方法。 is用于标识a is Nonea is a等内容。对于数字,它仅适用于256下的小数字:

>>> a = 10
>>> b = 10
>>>
>>> a is b
True
>>>
>>> a = 256
>>> b = 256
>>>
>>> a is b
True
>>>

但在此数字之上,它将返回False

>>> a = 257
>>> b = 257
>>>
>>> a is b
False
>>>

您应始终使用==来比较数字。

答案 2 :(得分:0)

确保在此行上关闭两个括号。

VAL= int(input("to entre please punch in the pass word: ")

答案 3 :(得分:0)

看起来你正在尝试python 3.x,我不知道为什么你要用结束一行,它应该以: 像这样。

print('''do you wish to access this network''')
VAL= int(input("to entre please punch in the pass word: "))
if VAL is 2214:
      print("welcome")
else:
      print("wrong password, please check retry")

注意第3行的更改。另请注意第2行上缺少的paren 另外,考虑通过字符串而不是int转换进行比较,因为如果用户输入非数字,它将引发异常以将其转换为int。

我会使用以下内容。

VAL=input("to enter please punch in the password: ")
if VAL=='2214':
  print('welcome')
else:
  print("wrong password, please retry")

作为最后一点,上面的代码在python 2.x上运行很危险,因为输入执行输入的字符串而不是捕获字符串值。