python之语法四连击(选择、字典、输入输出、循环)

python基础回顾——语法三连击篇

前言

在学习了前述篇章的语法知识之后,为了减小一些较为简单的语法知识的冗余度,本次篇章我将三个语法知识放在同一篇中回顾讲述,分别是选择判断的if、字典以及输入输出表示。


if

条件测试

每条if 语句的核心都是一个值为True 或False 的表达式,这种表达式被称为条件测试 。Python根据条件测试的值为True 还是False 来决定是否执行if 语句中的代码。如果条件测试的值为True ,Python就执行紧跟在if 语句后面的代码;如果为False ,Python就忽略这些代码,如果存在else则执行其后的代码。

  • 检查两个对象是否相等==

  • 检查两个对象是否不相等!=

  • 数值比较判断>=><<=

  • 同时检查多个判断条件

    • and,要检查是否两个条件都为True ,可使用关键字and 将两个条件测试合而为一;如果每个测试都通过了,整个表达式就为True ;如果至少有一个测试没有通过,整个表达式就为False 。
      >>> a = 1
      >>> b = 3
      >>> if a > 0 and b < 4:
      ...     print(a,b)
      ... else:
      ...     print(b,a)
      ...
      1 3
      >>> if a > 0 and b < 2:
      ...     print(a,b)
      ... else:
      ...     print(b,a)
      ...
      3 1

    为改善可读性,可将每个测试对象都分别放在一对括号内,但并非必须这样做。

    • or, 也能够让你检查多个条件,但只要至少有一个条件满足,就能通过整个测试。仅当两个测试都没有通过时,使用or 的表达式才为False 。
          >>> if a > 0 or b < 2:
      ...     print(a,b)
      ... else:
      ...     print(b,a)
      ...
      1 3
  • 检查特定对象是否在列表中

    • 特定对象包含在列表中,要判断特定的值是否已包含在列表中,可使用关键字in
    • 特定对象不包含在列表中,使用关键字not in
      >>> a
      1
      >>> b
      3
      >>> list = [1,2,3,4,5]
      >>> a in list
      True
      >>> b not in list
      False
  • 布尔值
    TrueFalse,真与假,空字符串为假,非空字符串为真,非0的数为真。

if语句
  • 简单if语句

    if conditional_test:
        do something
  • if-else语句
    if-else 语句块类似于简单的if 语句,但其中的else 语句让你能够指定条件测试未通过时要执行的操作。

    if conditional_test:
        do something
    else:
        do something else
  • if-elif-else语句
    Python只执行if-elif-else 结构中的一个代码块,它依次检查每个条件测试,直到遇到通过
    了的条件测试。测试通过后,Python将执行紧跟在它后面的代码,并跳过余下的测试

    if conditional_test_0:
        do something
    elif conditional_test_1:
        do something
    else:
        do something else   

    else 在不需要时即条件都是需要明确符合情况下是可以省略的,也可以不止一个elif模块,可以多个明确条件的elif模块进行使用。

代码格式

在条件测试的格式设置方面,PEP 8提供的唯一建议是,在诸如== 、>= 和<= 等比较运算符两边各添加一个空格,例如,if age < 4: 要比if age<4: 好。

字典

字典是python又一重要的数据结构,和前述篇章讲到的列表、元组等都不相同,字典的存储形式是键值对的形式,每个键 都与一个值相关联,你可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可将任何Python对象用作字典中的值。
字典使用{} 进行定义,键—值 对是两个相关联的值。指定键时,Python将返回与之相关联的值。键和值之间用冒号分隔,而键—值对之间用逗号分隔。在字典中,你想存储多少个键—值对都可以。

>>> dic = {'item1':1,'item2':2,'item3':3}
>>> dic['item2']
2

在定义字典中会发现,在初始化字典中出现相同 的名字但是对应不同,并不会像列表那样重复存储,而是将已存在的相同 的值更新为最新数值,可直接理解为覆盖已有的键值对,即对字典进行修改。

>>> dict = {'item1':1,'item2':2}
>>> dict['item3']=3
>>> dict
{'item1': 1, 'item2': 2, 'item3': 3}
>>> dict['item1']=11
>>> dict
{'item1': 11, 'item2': 2, 'item3': 3}
  • 删除键值对
    删除字典元素使用del 语句,删除字典元素时需要指明对应的

    >>> del dict['item2']
    >>> dict
    {'item1': 11, 'item3': 3}
  • 遍历字典

    • 遍历键值对

      >>> for key,value in dict.items():
      ...     print("key:"+key)
      ...     print("value:"+str(value))
      ...
      key:item1
      value:11
      key:item3
      value:3

      遍历键值对需要字典方法items() ,从字典中获取键值对列表,如下:

      >>> dict.items()
      dict_items([('item1', 11), ('item3', 3)])
    • 遍历键

      >>> dict.keys()
      dict_keys(['item1', 'item3'])

      遍历字典的键,而不需要对应的值时,使用字典方法keys() 可以获取到字典的所有键,而在遍历字典中python默认会遍历所有的键,因此如果在熟悉字典之后有时也可省略keys() 方法,当然为了让代码更为清晰,我建议还是保留。
      需要对键进行排序,可以使用sorted() 方法:

      >>> dict['item0']=0
      >>> dict
      {'item1': 11, 'item3': 3, 'item0': 0}
      >>> sorted(dict.keys())
      ['item0', 'item1', 'item3']
    • 遍历值

      >>> dict.values()
      dict_values([11, 3, 0])

      遍历字典中的值而不需要键可以使用values() 方法,而对于一些情况下键的值是相同的,而不需要键时重复值可能需要处理且不需要值的数量只是针对值的内容,可以使用set 集合,set与列表相似但是元素不能重复。

      >>> dict['item4']=11
      >>> dict
      {'item1': 11, 'item3': 3, 'item0': 0, 'item4': 11}
      >>> set(dict.values())
      {3, 0, 11}
  • 嵌套
    嵌套是指不同数据结构之间的相互包含,如字典包含列表,元组包含列表等。

    • 字典列表(列表中存储字典)

      >>> list = []
      >>> for i in range(10):
      ...     list.append({'item':1,'item2':2})
      ...
      >>> list
      [{'item': 1, 'item2': 2}, {'item': 1, 'item2': 2}, {'item': 1, 'item2': 2}, {'item': 1, 'item2': 2}, {'item': 1, 'item2': 2}, {'item': 1, 'item2': 2}, {'item': 1, 'item2': 2}, {'item': 1, 'item2': 2}, {'item': 1, 'item2': 2}, {'item': 1, 'item2': 2}]
      >>> list[0]
      {'item': 1, 'item2': 2}

      将字典作为列表的元素,对多个同类型对象进行管理有帮助。

    • 字典中存储列表
      当字典元素需要多个值进行存储时可以使用列表作为字典元素进行存储,

      favorite_languages = {
          'jen': ['python', 'ruby'],
          'sarah': ['c'],
          'edward': ['ruby', 'go'],
          'phil': ['python', 'haskell'],
          }
      for name, languages in favorite_languages.items():
          print("\n" + name.title() + "'s favorite languages are:")
          for language in languages:
              print("\t" + language.title())

      注意  列表和字典的嵌套层级不应太多。如果嵌套层级比前面的示例多得多,很可能有更简单的解决问题的方案。

    • 字典中存储字典
      users = {
          'aeinstein': {
              'first': 'albert',
              'last': 'einstein',
              'location': 'princeton',
              },
          'mcurie': {
              'first': 'marie',
              'last': 'curie',
              'location': 'paris',
              },
          }

输入输出

在实际使用的应用中都是为了满足用户的需求,便少不了与用户的交互,而输出已经很熟悉了,而输入正是交互的另一重点。

  • input(),输入

    • 最简单的输入交互

      message = input("Tell me something, and I will repeat it back to you: ")
      print(message)

      函数input() 接受一个参数:即要向用户显示的提示 或说明,让用户知道该如何做。在这个示例中,Python运行第1行代码时,用户将看到提示Tell me something, and I will repeat it back to you: 。程序等待用户输入,并在用户按回车键后继续运行。输入存储在变量message 中,接下来的print(message) 将输入呈现给用户:

      Tell me something, and I will repeat it back to you: Hello everyone!
      Hello everyone!
    • 有时候,提示可能超过一行,例如,你可能需要指出获取特定输入的原因。在这种情况下,可将提示存储在一个变量中,再将该变量传递给函数input() 。这样,即便提示超过一行,input() 语句也非常清晰。

      prompt = "If you tell us who you are, we can personalize the messages you see."
      prompt += "\nWhat is your first name? "
      name = input(prompt)
      print("\nHello, " + name + "!")
  • 数值输入
    使用int()方法将输入的字符串转为整数,因为使用input方法输入的内容都是字符串格式,当需要其他类型的对象时需要进行转换格式。

>>> age=input("age=")
age=18
>>> int(age)
18
>>> age
'18'
>>> type(age)
<class 'str'>
>>> type(int(age))
<class 'int'>

Python 2.7,应使用函数raw_input() 来提示用户输入。这个函数与Python 3中的input() 一样,也将输入解读为字符串。
Python 2.7也包含函数input() ,但它将用户输入解读为Python代码,并尝试运行它们。因此,最好的结果是出现错误,指出Python不明白输入的代码;而最糟的结果是,将运行你原本无意运行的代码。如果你使用的是Python 2.7,请使用raw_input() 而不是input() 来获取输入。

while循环

之前的回顾内容中应用过for循环,while循环可表示为:

while conditional_test:
    do something

循环条件也可以是一个标志位符号,通过交互方式由用户决定是否结束循环,通过定义一个变量,一般该变量值为布尔值即True和False,进行是否执行循环的判断依据,

prompt = "\nTell me something, and I will repeat it back to you:"
prompt += "\nEnter 'quit' to end the program. "
active = True
while active:
    message = input(prompt)
    if message == 'quit':
        active = False
    else:
        print(message)
break

要立即退出while 循环,不再运行循环中余下的代码,也不管条件测试的结果如何,可使用break语句。break 语句用于控制程序流程,可使用它来控制哪些代码行将执行,哪些代码行不执行,从而让程序按你的要求执行你要执行的代码。

continue

要返回到循环开头,并根据条件测试结果决定是否继续执行循环,可使用continue 语句,它不像break 语句那样不再执行余下的代码并退出整个循环。

while循环处理字典和列表

通过循环及标志位判断进行交互,不断执行列表或字典操作,如删除、写入等。

#循环删除列表重复元素
pets = ['dog', 'cat', 'dog', 'goldfish', 'cat', 'rabbit', 'cat']
print(pets)
while 'cat' in pets:
pets.remove('cat')
print(pets)
#循环写入字典元素
responses = {}
# 设置一个标志,指出调查是否继续
polling_active = True
while polling_active:
    # 提示输入被调查者的名字和回答
    name = input("\nWhat is your name? ")
    response = input("Which mountain would you like to climb someday? ")
    # 将答卷存储在字典中
    responses[name] = response
    # 看看是否还有人要参与调查
    repeat = input("Would you like to let another person respond? (yes/ no) ")
    if repeat == 'no':
        polling_active = False
    # 调查结束,显示结果
print("\n--- Poll Results ---")
for name, response in responses.items():
    print(name + " would like to climb " + response + ".")

——————

小结

本章节讲述的内容较之前的篇章多了一点,但是都是较为基础的python结构和语法,其中选择语句与循环语句多次使用便能熟悉,字典以及列表、集合等数据结构的使用需要更多的练习,可以结合嵌套的思想,加入循环和判断作为遍历和选择,从而加深,尤其是字典是键值对形式的元素存储方式,在调用等方面与列表还是不同的,共勉。

附录资料
python编程入门

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值