@[xxytju](/user/1275372)
题意:
读入第一行 10 个 100 到 200 之间的整数 $h_i,i=1,2,...,10$,每个数字之间用空格隔开;
第二行是另一个数字 $H$;
判断有多少 $i$ 使得 $h_i<=H+30$。
参考通用的实现:
```python
h=list(map(int,input().split()))
H=int(input())
res=0
for hi in h:
if hi<=H+30:
res+=1
print(res)
```
关于读入一行若干个数字转化为 `list` 的方法:
```python
>>> l=list(map(int,input().split()))
100 200 150 140 129 134 167 198 200 111
>>> l
[100, 200, 150, 140, 129, 134, 167, 198, 200, 111]
```
注意:`.split()`里面一般不加 `' '`,`.split()` 的作用不等同于 `.split(' ')`。
by Terrible @ 2024-01-31 00:12:13
第一个程序,没有将字符串转化成整数类型再参与比较,而且 `if` 第二行没有缩进,你不在本地调试一下吗?
另外 `sum` 本身是一个 Python 的内部函数,尽量不要用来作为标志符名称。
---
第二个程序,不仅读入的数据顺序是错误的,而且数据的读入方式也是不对的,不是分成 10 行,每行一个数字。
---
关于 `sum` 可以实现一个更节省字节的版本:
```python
h=list(map(int,input().split()))
H=int(input())
print(sum(map(lambda x:x<=H+30,h)))
```
---
总结:对于 Python 来说,(以控制台读入的方式)读入数据要以**行**为基础。
by Terrible @ 2024-01-31 00:18:00
@[Terrible](/user/195942) 非常感谢您的回答!学到了!
by xxytju @ 2024-01-31 00:20:53
python啊,我是对了,不过是向老师求助了... ...
by shaoxingchen @ 2024-02-06 22:32:45
是,我python是对的,但大佬能不能给我讲讲c++语言怎么做呢???
by shaoxingchen @ 2024-02-06 22:34:41
python是不能直接以换行做分隔的建议用input.split()。详情见[此处](https://blog.csdn.net/m0_69629358/article/details/129907518)
by LawrenceLoyaldog @ 2024-02-18 20:17:00