Python 我做错了什么,总是突出冒号

Python 我做错了什么,总是突出冒号,python,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") 如果要比较相等性,我还建议避免使用is运算符 is操作符比较身份(

您忘记关闭括号:

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")
如果要比较相等性,我还建议避免使用
is
运算符

is
操作符比较身份(即,它是相同的对象,位于相同的内存位置),而
==
比较是否相等(即,根据语义,这些对象可以被视为相等)

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


要详细说明为什么要突出显示冒号而不是
if
本身,请执行以下操作:

请记住,在python中,可以将每个表达式括在括号内,以便在多行中编写,但不能将语句放在括号内。 有一个明确的目标

语句包括循环语句(
for
while
break
continue
else
),
if elif else
try except finally
with
,赋值
name=value
,函数和类的定义等

表达式是其他的一切:
a+b
object.method()
function\u call()

在您的特定示例中,解析器看到以下行:

print('''do you wish to access this network''')
VAL= int(input("to entre please punch in the pass word: "))   # here!
if VAL is 2214:
这是一个赋值语句。它将右侧表达式的值指定给
VAL
。因此,它解析表达式
int(input(…)…
,由于此行没有右括号,它将继续在下一行进行解析。但在下一行它会找到:

VAL= int(input("to entre please punch in the pass word: ")
这是一条语句,因为结尾有
冒号,表达式不能包含语句。这也是为什么如果(a=100)<50:,则不能执行
之类的操作,即在条件内赋值

if VAL为2214
本身不是错误,因为还存在一个
if
-表达式(实际调用)。 例如,以下是有效的python代码:

if VAL is 2214:

但是,在这种情况下,必须同时指定
if
else
,并且条件表达式中没有冒号。

请确保关闭此行的两个括号

VAL = int(input("prompt ")
if n % 2 == 0 else input("different prompt "))

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

VAL= int(input("to entre please punch in the pass word: ")
注意第3行的更改。同时注意第2行缺少的参数 此外,考虑通过字符串进行比较,而不是int转换,因为如果用户输入非数字,它将引发一个异常,将其转换为int。 我将使用以下方法

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")

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

第一个错误是您忘记关闭
,正如@Bakuriu指出的:

VAL=input("to enter please punch in the password: ")
if VAL=='2214':
  print('welcome')
else:
  print("wrong password, please retry")
第二个错误是使用
is
比较数字,这是比较数字的错误方法<代码>是
用于识别诸如,
a是无的
,或者
a是一个
。对于数字,它仅适用于
256
下的小数字:

VAL= int(input("to entre please punch in the pass word: "))
但在这个数字之上,它将返回
False

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

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

您正在尝试编写python吗?为什么它包含ruby on rails标记?这个问题似乎离题了,因为它是关于初学者的一个代码错误,如果对其他人没有帮助的话,可能是这样。太本地化了我希望他使用输入而不是原始输入,并且使用打印作为函数而不是声明它是3.x,在这种情况下,
(257是257)
是正确的,因为3.x消除了整数和长整数之间的区别,但是即使这样,==应用于数值比较,除非您特别希望具有整数值的浮点与相同值的整数不匹配
1.0不是1
。第三个错误是不使用。(VAL->VAL)哦,还有一个关于is vs==,python3的注意事项是,完成整数比较的时间大约是==的一半,因此如果您有多个嵌套的不可重构代码执行某种线性搜索来查找值,is比==更好。关于PEP8,需要注意的一点是,它主要用于核心python发行版本身,以及作为扩展设计的第三方框架(twisted、django等),因此,尽管我不同意所有新项目都应该严格遵循PEP8,但如果您想让代码进入标准库,需要这样做。此外,如果您要偏离PEP8,您可能有充分的理由这样做。@Perkins
257 is 257在任何python版本中都能工作,因为编译器会这样做。如果在解释器的两行中输入
a=257
b=257
,则
a是b
False
,而使用
255
返回
True
。另外,
is
不能用于加速线性搜索,这是不正确的。只有在确定序列中包含的确切对象具有引用时,才能使用它。在99%的情况下,这是不正确的。此外,除非您以后需要再次使用
VAL
,否则只需使用
if-input('txt')='2214':
,如果您希望它忽略空白,请将其设置为
input('txt').strip()
>>> a = 257
>>> b = 257
>>>
>>> a is b
False
>>>