python - 在 python 中的单行中键入各种类型的输入和类型转换错误
问题描述
我在 HackerRank 上找到了这个。
我必须输入号码。学生(比如 n)。然后接下来的n行,每行有学生姓名,以及用户输入的三个科目的分数。下一行包含任何学生的姓名。根据该输入,我必须计算该学生的平均分数。我必须提供这样的输入(根据测试用例):
4
nameA 50 50 50
nameB 69 78 45
nameC 56 47 45
nameD 57 49 30
nameC
由于我必须在同一行上提供多种类型的输入,当我尝试附加列表时,它给了我一个“无效文字”错误。所以我用input().split(" ")
. 这是我的代码:
if __name__ == '__main__':
n = int(input())
list1 = []
for i in range(0,n):
a = input().split(" ")
b = input().split(" ")
c = input().split(" ")
d = input().split(" ")
b = float(b)
c = float(c)
d = float(d)
list1.append(a)
list1.append(b)
list1.append(c)
list1.append(d)
name = input().split()
avg = 0.00
inn = list1.index(name)
avg = (list1[inn+1]+list1[inn+2]+list2[inn+3])/3
print(avg)
但这是显示的错误:
Traceback (most recent call last):
File "solution.py", line 11, in <module>
b = float(b)
TypeError: float() argument must be a string or a number, not 'list'
另一方面,如果我只是简单地使用 输入input()
,则会再次出现“以 10 为基数的无效文字”错误。类型转换出了什么问题?以及如何在一行中提供不同类型的输入(即使用空格)。我也尝试使用嵌套列表来解决这个问题。但是如果我必须附加嵌套列表,那么语法必须是什么?
解决方案
一个电话input()
会给你一个像nameA 50 50 50
. 对此进行拆分会给你一个类似的列表['nameA', '50', '50','50']
。
您要做的是从一行中提取名称和数字。像这样的东西:
a, b, c, d = input().split( " " )
推荐阅读
- vba - 需要稍微调整这段代码......需要它来找到精确匹配,我不在我的联盟
- batch-file - 变量在批处理文件中不递增
- python - Tensorflow:如何为 numpy 矩阵输入创建 feature_columns
- odoo-10 - Odoo 10 会计
- sql - Oracle SQL - 按列值和数量对数据集进行分区,然后从每个分区中检索第一行和最后一行
- json - 如何在swift 3中使用数组和字符串进行json
- php - 单页长时间响应需要异步
- c++11 - ifstream 检查读取错误
- c# - ““XamlCTask”任务意外失败。” 错误
- ruby-on-rails - 在 rails 中使用 simple_form 动态添加用户输入