2016-09-28 270 views
1

进出口新的这个所以我很抱歉,如果这不是要问的问题的最佳途径......如何将变量与python中的字符串进行比较?

这里是代码 -

import sys 

print("What is ur name?") 
name = sys.stdin.readline() 

answer = "jack" 

if name is answer : 
    print("ur awesome") 
exit(); 

现在,当我在cmd中我不运行它即使 我输入 - 插孔?谢谢

+2

使用'=='而不是'is'。 – StardustGogeta

+0

小心'sys.stdin.readline()'。它将保留换行符。所以如果你输入'jack',它实际上就是'jack \ n'。所以,当答案真的如此时,'answer ==“jack”'将是假的。你最好用'input()'代替。 – idjaw

+0

使用'sys.stdin.readline()',你需要'answer == name.strip()'否则使用'input()' – dawg

回答

5

首先,替换is==is检查两个底层字符串是否是相同的实体(在内存中),而==只是想检查它们是否具有相同的值。

因为“jack”的来源来自两个来源(一个来自用户,另一个来自您的硬编码),它们是两个独立的对象。

由于@dawg提到你还必须使用.strip()摆脱使用sys.stdin.readline()输入时的换行符。读取输入的最佳方法是在python3中使用input()方法,或在python2中使用raw_input()

name = input('What is your name?\n')

+1

你需要'.strip()',因为'sys.stdin.readline()'包含'\ n' – dawg

+1

我喜欢这个解释,但是提供一个解决方案会让答案更好:) – Li357

4

使用==的字符串比较。另外,readline()将在字符串末尾包含换行符。你可以用例如

name = name.strip() 

或者,您可以使用(在Python 3 input()raw_input()代替readline(),因为它不包括开始与换行符。

name = raw_input("What is your name?\n") 

能够打印字符串以查看它是否有任何额外的空格是有帮助的,例如,

print("name: [%s]\n" % name) 
+1

太好了,但是请添加参考'input()' – dawg

相关问题