吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1308|回复: 10
收起左侧

[求助] 执行结果出错了吗?

[复制链接]
双瑜座 发表于 2019-10-8 17:56
请问下面的代码中为什么不好好执行呢(是代码哪里写错了吗)?
[Asm] 纯文本查看 复制代码
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())
疑问.JPG

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

老伙计 发表于 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[0])  # 只有 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[0] + '.')

你代码里面的language是在遍历['python','ruby']时被赋值的,所以你打印出来是'ruby'
风绕柳絮轻敲雪 发表于 2019-10-8 20:49
 楼主| 双瑜座 发表于 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[0]  ...

抱歉啊,有点不太理解在遍历第一个列表时候怎么给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里才能出的错了.......
 楼主| 双瑜座 发表于 2019-10-11 17:05
风绕柳絮轻敲雪 发表于 2019-10-11 12:28
你遍历得到的是列表,而不是字符串,另外你上面遍历的是languages,下面输出的时候却是language,而langu ...

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

从你下面定义language的那个遍历里得到的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-30 09:28

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表