Python“if”语句更改变量值

时间:2018-01-18 21:27:25

标签: python

这段代码来自我正在研究的一本蟒蛇书,本章正在讨论词典。

favorite_languages = { 
    'jen': 'python',
    'sarah': 'c',
    'edward': 'ruby',
    'phil': 'python',
    }

friends = ['phil','sarah']

for name in favorite_languages.keys():
    print(name.title())

    if name in friends:
        print(" hi " +name.title() +
            ", i see your favorite language is " +
            favorite_languages[name].title() + "!")

The result is:

Jen 
Ed 
Phil 
 hi Phil, i see your favorite language is Python! 
 hi Sarah, i see your favorite language is C!

我无法理解代码相对于变量“name”的逻辑以及值变化的原因。意思是,变量“name”由“for”循环创建,所有Dictionary键都存储在其中,因此当“if”语句开始时,“name”的值是所有键。

我对“if”语句的理解是它只返回一个布尔值true或false,在本例中为true。但是为什么“name”的值(作为这个“if”语句的结果)在这一点上变为“friends”的值?

它只是Python内置的规则吗?因为它在逻辑上并不遵循,除非我遗漏了一些东西。

写它会更有意义:

if friends in name:
    print(" hi " friends.title() +

2 个答案:

答案 0 :(得分:1)

“......变量”name“由”for“循环创建,所有Dictionary键都存储在其中,”

我认为这是你的错误观念。行for name in favorite_languages.keys():不会将所有键存储在变量name中。这意味着,对于密钥中的每个条目,一次一个地执行以下代码(“套件”),每次将变量name设置为不同的条目。

因此,如果favorite_languages.keys()['jen', 'sarah', 'edward', 'phil'],请执行该套件四次:将name设置为“jen”;一旦它设置为'sarah',一旦设置为'edward',一次设置为'phil'。

答案 1 :(得分:0)

词典中的在for循环中被分配了标识符name:之前的字符串。字典

favorite_languages = { 
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}

friends = ['phil','sarah']

for name in favorite_languages.keys():
    print(name.title())

    if name in friends:
        print(" hi " +name.title() +
            ", i see your favorite language is " +
            favorite_languages[name].title() + "!")

所以for循环遍历字典中的任何键并使用title()方法打印其值

另外if - 语句确定列表friends中是否存在键(= name),如果是,则执行链接代码,如果为false,则不执行

确切的输出是

Sarah
 hi Sarah, i see your favorite language is C!
Edward
Jen
Phil
 hi Phil, i see your favorite language is Python!
  • for循环greps键'Sarah',if-statement检查它是否在列表中的朋友:是的,所以打印

  • for循环greps键'Edward',if-statement检查它是否在列表中的朋友:是false所以没有打印

  • for循环greps键'Jen',if-statement检查它是否在列表中的朋友:是false所以没有打印

  • for循环greps键'Phil',if-statement检查它是否在列表中的朋友:是的,所以打印

在字典中,使用[key].title()访问与密钥关联的值,在本例中为[name].title(),因为name用作密钥的标识符