所以这里有一个简单的问题输入:第一行包含一个整数,N,学生数量。接下来的2N行描述了每一位学生。第一行包含一个学生的名字。第二行包含他们的成绩。和代码:
l = []
second_lowest_names = []
scores = set()
for _ in range(int(input())):
name = input()
score = float(input())
l.append([name, score])
scores.add(score)
second_lowest = sorted(scores)[1]
for name, score in l:
if score == second_lowest:
second_lowest_names.append(name)
for name in sorted(second_lowest_names):
print(name, end='\n')
我只是有点搞不懂为什么float()函数只接受数字而不接受姓名作为输入,这是一个示例输入
5
Harry
37.21
Berry
37.21
Tina
37.2
Akriti
41
Harsh
39
发布于 2021-01-20 14:57:05
你知道float是做什么的吗?它是floating point number的缩写,是一种在小数点后可以有小数部分的计算机中表示数字的方法。每当您调用input()时,python总是接收您键入的字符串,这意味着一个字符序列。
字符串在计算机中不像浮点数那样具有直接的数字意义。对于计算机来说,字符串"41“并不是您或我会立即将其解释为有意义的数字。对于计算机来说,它只是两个字符的顺序,第一个字符恰好是"4“字符,第二个字符恰好是"1”字符--不多也不少。python中的引号表示字符串。如果你计算"41"+"1“,你会得到"411”。你甚至可以计算"41“+ "hello”得到"41hello“。这些都是字符串。
调用float("41")获取字符串并尝试将其计算为浮点数,计算机将其解释为实际数字,而不是简单的字符序列。正如您所预期的那样,两个浮点值的总和为42.0。
因为一个学生的名字并不是用来表示数字的,所以您不应该尝试对它调用float(),因为这样做没有任何意义。Float很可能无法生成数字解释,除非名称是少数几个特殊字符串之一,如"nan“(不是数字)或"inf”(无穷大)。如果名字恰好是这些字符串中的一个,你无论如何都不会想要这样的翻译。
这就是为什么在数字实体上而不是在代码中的名称上调用float。
除了float()之外,另一个类似的东西是int(),它是整数的缩写。浮点数和整型数都是实际的数字表示形式。本质上的区别是,整数被限制为整数(正、负或零),而浮点值在小数点后可以有小数。它们是在计算机中表示数字的不同方式,每种方式都适用于不同的情况。
https://stackoverflow.com/questions/65802200
复制相似问题