我想用python创建一个简单的程序,该程序返回我的名字,或者如果不是我的名字,则打印“错误”。 这是基本的。喜欢,我想给这个清单:
(('Leonardo',), ('Leonardo',), ('Leonardo',), ('Leonardo',), ('Leonardo',), ('Leonardo',), ('Leonardo',), ('Leonardo',), ('Leonardo',), ('Leonardo',), ('0122',), ('0122',), ('0122',), ('0122',), ('0122',))
,然后检查所有元素,如果其中的单词为Leonardo
,则应打印error
。谁能帮我?
我尝试过此方法,但它使我的列表索引超出范围:
for i in range(len(resultado)):
if list(resultado[i])[i] == 'Leonardo':
print('erro')
答案 0 :(得分:0)
您必须替换:
if list(resultado[i])[i] == 'Leonardo':
具有:
if resultado[i][0] == 'Leonardo':
由于您仅检查第一个元素。
答案 1 :(得分:0)
您提供的输入实际上不是列表;这是一个元组的元组。
根据您最终使用此结构的精确程度,您可能希望在遇到这种情况的情况下结束
resultado_list = ['Leonardo', 'Leonardo', 'Leonardo', ...]
代替当前的嵌套结构。然后你可以简单地说
if 'Leonardo' in resultado_list:
要转换当前结构(假设它是统一的),您可以说
resultado_list = [r[0] for r in resultado]
这只是从每个嵌套元组中丢弃除第一个值以外的任何值;但是同样,您提供的数据表明,没有一个元组具有多个元素。尽管更有可能,但无论哪种代码首先创建了嵌套结构,都应该修复为返回没有嵌套的单个列表。
如果您真的想保留原始结构,当然也可以说
if ('Leonardo',) in resultado:
尝试中的错误是您尝试检查resultado[0][0]
(工作正常),resultado[1][1]
(失败,因为没有第二个元素),resultado[2][2]
(同上)等。简单的解决方法是将resultado[i][i]
更改为resultado[i][0]
;但如上所述,您可以对此进行很多改进。
如果您要检查所有元素是否都是'Leonardo'
if all(r[0] == 'Leonardo' for r in resultado):
print('all Leonardos!')
else:
print('erro')
表示原始结构,
if all(r == 'Leonardo' for r in resultado_list): ...
用于扁平化的适当列表表示。
答案 2 :(得分:0)
因为它是一个嵌套元组,所以您只循环第一层并获得嵌套元组的第一个元素。因此,您将[i]用作第一个索引,将[0]用作第二个索引。
因此而不是
list(resultado[i])[i]
您应该使用
resultado[i][0]
答案 3 :(得分:0)
您需要循环浏览列表中的每个列表。 另一种方法是:
for i in resultado:
for a in i:
if "Leonardo" in a:
print("Leonardo")
else:
print("error")
此外,请进一步说明,因为说明中说:“ 我想用python创建一个简单的程序,该程序返回我的名字,或者如果不是我的名字,则显示'error'。”但是,然后在您说出“ 如果其中的单词是Leonardo,那么它应该打印错误。”之后。您是否要让程序打印出不是您的名字还是名字的错误?除此之外,祝您编程愉快! (P.S.您不能返回自己的名字,除非它在函数中)