2013-10-10 66 views
0

我已經嘗試了很多不同的方法來獲得此代碼的工作。用字符串回答Stdin

任何人都知道如何得到這個工作?

import sys 

y = 1 

def test(): 
    print("Hello?") 
    x = (sys.stdin.readline()) 
    if x == ("hello"): 
     print("Ah your back") 
    else: 
     print("Huh?") 

while y == 1: 
     test() 
+1

爲什麼不使用'輸入()' –

+0

所以,如果我使用的輸入()將它只是爲x =輸入() – Minigeek22

+0

耶:HTTP://計算器。 com/a/19294328/2425215 –

回答

1

這應該工作:

import sys 

y = 1 

def test(): 
    print("Hello?") 
    x = (sys.stdin.readline()) 
    if x == ("hello\n"): 
     print("Ah your back") 
    else: 
     print("Huh?") 

while y == 1: 
    test() 

你缺少這標誌着在字符串中一行的末尾的\n或換行符。

1

它在最後讀取\n的行,所以比較失敗。嘗試類似:

import sys 

y = 1 

def test(): 
    print("Hello?") 
    x = (sys.stdin.readline()) 
    if x[:-1] == ("hello"): 
     print("Ah your back") 
    else: 
     print("Huh?") 

while y == 1: 
     test() 
1

剝去換行符。

import sys 

def test(): 
    print("Hello?") 
    x = sys.stdin.readline().rstrip('\n') 
    if x == "hello": 
     print("Ah your back") 
    else: 
     print("Huh?") 

while True: 
     test() 
+0

我需要時間在那裏,因此它循環並再次詢問。 – Minigeek22

+0

@Arpit:關於while循環。它不會導致堆棧溢出; test()在終止後依次調用。 –

+0

@ Minigeek22你將如何終止你的程序? – Arpit

1
import sys 

y = 1 
def test(): 
    print("Hello?") 
    x = sys.stdin.readline() 
    if x == "hello\n": #either strip newline from x or compare it with "hello\n". 
     print("Ah your back") 
    else: 
     print("Huh?") 
test() #your while will cause stack overflow error because of infinite loop. 

http://ideone.com/Csbpn9

2

爲什麼不使用input()?當這可能是最簡單的方法...

import sys 

y = 1 

def test(): 
    print("Hello?") 
    x = input() 
    if x == ("hello"): 
     print("Ah your back") 
    else: 
     print("Huh?") 

while y == 1: 
     test()