与python3中的sys.stdin.readline()相关

时间:2017-05-31 11:45:22

标签: python python-3.x

对于以下python 3代码片段当我将“Level”作为输入字符串时,它返回3作为输出,而预期输出为2.

import sys

print("Enter a String and I will tell you about it")


str = sys.stdin.readline()


print(int(len(str)/2))

2 个答案:

答案 0 :(得分:1)

最后包含newline

import sys

print("Enter a String and I will tell you about it")

string = sys.stdin.readline()

print(int(len(string)/2))
for char in string:
    print('{}: \'{}\''.format(ord(char), char))

给出:

Enter a String and I will tell you about it
Level
3
76: 'L'
101: 'e'
118: 'v'
101: 'e'
108: 'l'
10: '
'

请使用rstrip()

import sys

print("Enter a String and I will tell you about it")

string = sys.stdin.readline().rstrip()

print(int(len(string)/2))
for char in string:
    print('{}: \'{}\''.format(ord(char), char))

给出:

Enter a String and I will tell you about it
Level
2
76: 'L'
101: 'e'
118: 'v'
101: 'e'
108: 'l'

答案 1 :(得分:1)

对变量使用系统var名称是非常糟糕的做法。

你的问题在于readlines部分,输入等级并按Enter键设置你的

str ='level \ n'

'\ n'只注册为一个字符,因此总长度为6,预期输出为3.修复使用

str = sys.standin.readline()。rstrip()