双瑜座 发表于 2019-10-8 17:56

执行结果出错了吗?

请问下面的代码中为什么不好好执行呢(是代码哪里写错了吗)?{:1_890:}
favourite_languages = {
    'jen':['python','ruby'],
    'sarah':['c'],
    'edward':['ruby','go'],
    'phil':['pyhton','haskell'],
    }

for name ,languages in favourite_languages.items():
    if len(languages) == 1:
      print('\n'+name.title()+"'s favourite language is:" + language + '.')   
    else:
      print('\n'+name.title()+"'s favourite languages are:")
      for language in languages:
            print('\t'+language.title())

老伙计 发表于 2019-10-8 18:16

本帖最后由 老伙计 于 2019-10-8 18:35 编辑

      这条语句中的变量 language 存在未赋值就使用的问题

      print('\n'+name.title()+"'s favourite language is:" + language + '.')

      下面的代码我已经整体修改,楼主可以测试一下:

favourite_languages = {
    'jen':['python' , 'ruby'] ,
    'sarah' : ['c'] ,
    'edward' : ['python' , 'go'] ,
    'phil' : ['python' , 'haskell'] ,
    }
for name , languages in favourite_languages . items() :
    if len(languages) == 1 :
      print("\n" + name . title() + "'s favourite language is : \n\t" + languages)# 只有 1 个元素也是列表,同样需要通过切片操作来获取到目标字符串
    else:
      print("\n" + name . title() + "'s favourite language are : ")
      for language in languages:
            print('\t' + language . title())

wc110302 发表于 2019-10-8 18:22

if len(languages) == 1:
    print('\n' + name.title() + "'s favourite language is:" + languages + '.')

你代码里面的language是在遍历['python','ruby']时被赋值的,所以你打印出来是'ruby'

风绕柳絮轻敲雪 发表于 2019-10-8 20:49

language='c'错误
language=['c'] 正确

双瑜座 发表于 2019-10-11 10:57

老伙计 发表于 2019-10-8 18:16
这条语句中的变量 language 存在未赋值就使用的问题




哦哦明白了,就是我代码里面的language没有像 for language in languages这样赋值一下就直接使用了,感谢

双瑜座 发表于 2019-10-11 11:01

wc110302 发表于 2019-10-8 18:22
if len(languages) == 1:
    print('\n' + name.title() + "'s favourite language is:" + languages...

抱歉啊,有点不太理解在遍历第一个列表时候怎么给language赋值的呢是,即使是这样给language赋值的,为什么只打印了一个ruby呐

双瑜座 发表于 2019-10-11 11:05

风绕柳絮轻敲雪 发表于 2019-10-8 20:49
language='c'错误
language=['c'] 正确

刚开始看到你的回复我在想,这写的是什么意思啊,后来看了又看感觉好像知道你要说什么了, 就是获取到的字符串的格式?还是说列表格式?但是自己想着想着又感觉不明白它的含义了不能清晰地知道您要表达的,麻烦您具体说一下可以吗,不胜感谢

风绕柳絮轻敲雪 发表于 2019-10-11 12:28

本帖最后由 风绕柳絮轻敲雪 于 2019-10-11 13:14 编辑

双瑜座 发表于 2019-10-11 11:05
刚开始看到你的回复我在想,这写的是什么意思啊,后来看了又看感觉好像知道你要说什么了, 就是获取到的 ...
你遍历得到的是列表,而不是字符串,另外你上面遍历的是languages,下面输出的时候却是language,而language却在下面for循环的时候被定义了,这也只能是在Py自带的IDE里才能出的错了.......{:301_997:}

双瑜座 发表于 2019-10-11 17:05

风绕柳絮轻敲雪 发表于 2019-10-11 12:28
你遍历得到的是列表,而不是字符串,另外你上面遍历的是languages,下面输出的时候却是language,而langu ...

哦哦知晓了,但是为什么我错误的代码里面language输出的是ruby呢,这个ruby是language从哪儿获取到的啊{:301_975:}

风绕柳絮轻敲雪 发表于 2019-10-11 17:09

双瑜座 发表于 2019-10-11 17:05
哦哦知晓了,但是为什么我错误的代码里面language输出的是ruby呢,这个ruby是language从哪儿获取到的啊{: ...

从你下面定义language的那个遍历里得到的
页: [1] 2
查看完整版本: 执行结果出错了吗?