# TEST
import sys
a=sys.stdin.readline() # here the user inputs the string "HELLO"
print a
if a == "HELLO":
sys.stdout.write("GOOD_BYE")
print "AAAAAAAAAAA"
raw_input('\npress any key to continue')
你好。我是Python新手
我使用的是Python 2.7.11
我不明白为什么控制没有进入if
声明
给定代码的输出结果为
HELLO
HELLO
AAAAAAAAAAA
press any key to continue
注意:上面的第一个“HELLO”是用户输入
我已为sys.stdout.flush()
语句尝试了sys.stdout.write()
。但它似乎没有帮助
如果我使用a=raw_input()
而不是第二行编写相同的代码,它的工作完全正常
任何人都可以解释这个原因。
答案 0 :(得分:2)
POST /upload/youtube/v3/videos?uploadType=resumable&part=snippet,status,contentDetails HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer AUTH_TOKEN
Content-Length: 278
Content-Type: application/json; charset=UTF-8
X-Upload-Content-Length: 3000000
X-Upload-Content-Type: video/*
{
"snippet": {
"title": "My video title",
"description": "This is a description of my video",
"tags": ["cool", "video", "more keywords"],
"categoryId": 22
},
"status": {
"privacyStatus": "public",
"embeddable": True,
"license": "youtube"
}
}
最后附带换行符。所以你实际在做的是比较
readline
实际上是假的。
执行HELLO\n == HELLO
删除换行符。
答案 1 :(得分:0)
readline()函数从标准输入控制台读取换行符。请使用rstrip(“\ n”)删除它。
import sys
a=sys.stdin.readline().rstrip('\n')
print (a)
if a == "HELLO":
sys.stdout.write("GOOD_BYE")
print ("AAAAAAAAAAA")
raw_input('\npress any key to continue')
答案 2 :(得分:0)
尝试在if条件中使用'in'而不是'==',有时这些行可能会有一些隐藏的字符。
if "HELLO" in a:
答案 3 :(得分:0)
您在输入字符串后按'ENTER'发送输入。所以你的输入是'HELLO \ n',而你的if语句'if'条件是'a ==“HELLO”'。
使用strip()方法。方法strip()返回字符串的副本,其中所有字符都已从字符串的开头和结尾处删除(默认空格字符)。
所以新的工作代码:
import sys
a=sys.stdin.readline().rstrip('\n')
a=a.strip() # This will remove \n from input
print (a)
if a == "HELLO":
sys.stdout.write("GOOD_BYE")
print ("AAAAAAAAAAA")
raw_input('\npress any key to continue')