如何计算python中stdin的用户输入数量

时间:2015-03-24 06:54:14

标签: python python-3.x

嗨,如果这看起来像是家庭作业,我很抱歉,但我一直在尝试并且未能完成这项工作,我真的很感谢一些专家的帮助。我正在尝试自学python。

我试图解决CodinGame中的问题,并且第一个希望您计算输入字符串传递给程序的次数。输入字符串分为两部分(例如" Sina dumb")。我试着用这个:

count = int(sys.stdin.readline())
count = int(input())
count = int(raw_input()) #python2

但程序失败了:

    ValueError: invalid literal for int() with base 10: 'Sina dumb\n'

取决于我是否留下换行符。 请问我做错了什么,怎样才能做得更好?

3 个答案:

答案 0 :(得分:3)

python2.xpython 3.x

sys.stdin.readline()input给出type str。如果int("string")包含string,则chars会产生错误。

我认为你需要这个(假设)

import sys
input_var = input() # or raw_input() for python 2.x

# entering Sina dumb 
>>>print(len(input_var.split()))
2

<强>更新

如果你想计算你输入的input多少。试试这个

import sys
from itertools import count
c = count(1)
while True:
    input_var = input()
    print ("you entered " + str(next(c)) + " inputs")

答案 1 :(得分:0)

一方面,在这种情况下,python说你尝试将字符串'Sina dumb\n转换为无效的整数,这是真的。这可能是在第二行int(input)

触发的

另一方面,为了解决您的问题,一个简单的方法,因为您作为输入传递的每一行包含行尾字符\n,您可以例如获取输入内容,并将其拆分为{{1 }}字符并计算结果列表的大小。

答案 2 :(得分:-1)

input()中的{p> python 3.xraw_input()中的python 2.x会给出一个字符串。如果字符串包含除数字之外的任何内容,则会提供ValueError

你可以试试正则表达式:

import re
line = input()
count = len(re.findall(r'\w+', line))
print (count)