xxytju @ 2024-01-30 23:42:54
小白,没太搞懂题目里的输入是怎么输入,是一次性输入“数字空格数字空格。。。”这样的字符串,还是根据你的程序循环输入十一个单独的数字
用python写了两版,都显示前十个数据没接收是为啥啊。。。
字符串版本:
s = input()
my_list = s.split()
height = int(input()) + 30
sum = 0
for x in my_list:
if x <= height :
sum += 1
print(sum)
十个数字版本:
i = 1
my_list = []
num = 0
height = int(input()) + 30
while i <= 10:
my_list.append(int(input()))
i += 1
for x in my_list:
if x <= height:
num += 1
print(num)
希望可以帮我看看,求求了
by Terrible @ 2024-01-31 00:12:13
@xxytju
题意:
读入第一行 10 个 100 到 200 之间的整数
第二行是另一个数字
判断有多少
参考通用的实现:
h=list(map(int,input().split()))
H=int(input())
res=0
for hi in h:
if hi<=H+30:
res+=1
print(res)
关于读入一行若干个数字转化为 list
的方法:
>>> 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:18:00
第一个程序,没有将字符串转化成整数类型再参与比较,而且 if
第二行没有缩进,你不在本地调试一下吗?
另外 sum
本身是一个 Python 的内部函数,尽量不要用来作为标志符名称。
第二个程序,不仅读入的数据顺序是错误的,而且数据的读入方式也是不对的,不是分成 10 行,每行一个数字。
关于 sum
可以实现一个更节省字节的版本:
h=list(map(int,input().split()))
H=int(input())
print(sum(map(lambda x:x<=H+30,h)))
总结:对于 Python 来说,(以控制台读入的方式)读入数据要以行为基础。
by xxytju @ 2024-01-31 00:20:53
@Terrible 非常感谢您的回答!学到了!
by Chong_Guang @ 2024-02-06 22:32:45
python啊,我是对了,不过是向老师求助了... ...
by Chong_Guang @ 2024-02-06 22:34:41
是,我python是对的,但大佬能不能给我讲讲c++语言怎么做呢???
by LawrenceLoyaldog @ 2024-02-18 20:17:00
python是不能直接以换行做分隔的建议用input.split()。详情见此处