python,小白没太弄懂题目

P1046 [NOIP2005 普及组] 陶陶摘苹果

@[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


|