Python--学习之路


记录一些遇到的问题,百度去搜别人的,很多都是乱七八糟、,对错都不管的乱复制,所以还是自己总结,用起来比较方便
代码样例基本来自菜鸟教学,我只是挑选自己觉得重要的点,大家也可以直接在菜鸟教学学习哈,那边比较全面
菜鸟教学:https://www.runoob.com/python3/python3-tutorial.html


  • 1.print()中文乱码

    这是print函数输出编码问题,添加下面的代码
    import io
    import sys
    sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8')
  • 2.python变量类型

  • 2.1赋值、输出(字符串、列表、元组、字典、集合)

    import io
    import sys
    sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8')
----------------------------------------------------------------

    x='abcdefghijklmn'      #字符串
    print(x)
    print(x[1:4])
    print(x[1:])
    print(x*2)
    print('----------------------------------')

    结果:
    abcdefghijklmn
    bcd
    bcdefghijklmn
    abcdefghijklmnabcdefghijklmn
---------------------------------------------------------------

    y=['abc',123,456,789,'dfg']     #列表
    print(y)
    print(y[1:4])
    y[1]=1000                       #可以进行赋值
    print(y[1:])
    print(y*2)
    print('----------------------------------')
    
    结果
    ['abc', 123, 456, 789, 'dfg']
    [123, 456, 789]
    [1000, 456, 789, 'dfg']
    ['abc', 1000, 456, 789, 'dfg', 'abc', 1000, 456, 789, 'dfg']
---------------------------------------------------------------

    z=('abc',123,456,789,'dfg')     #元组
    print(z)
    print(z[1:4])
    #z[1]=1000                       #不可以进行赋值
    print(z[1:])
    print(z*2)
    print('----------------------------------')

    结果
    ('abc', 123, 456, 789, 'dfg')
    (123, 456, 789)
    (123, 456, 789, 'dfg')
    ('abc', 123, 456, 789, 'dfg', 'abc', 123, 456, 789, 'dfg')
-----------------------------------------------------------

    s={1:'a',2:'b',3:'c',4:'d'}     #字典
    print(s)
    print(s[1])
    print(s[3])
    print(s.values())
    print(s.keys())
    print('---------------------------------')

    结果:
    {1: 'a', 2: 'b', 3: 'c', 4: 'd'}
    a
    c
    dict_values(['a', 'b', 'c', 'd'])
    dict_keys([1, 2, 3, 4])
--------------------------------------------------------

    #集合(set)是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员。
    #基本功能是进行成员关系测试和删除重复元素。
    sites = {'Google', 'Taobao', 'Runoob', 'Facebook', 'Zhihu', 'Baidu'}
    print(sites)   # 输出集合,重复的元素被自动去掉
    # 成员测试
    if 'Runoob' in sites :
        print('Runoob 在集合中')
    else :
        print('Runoob 不在集合中')

    # set可以进行集合运算
    a = set('abracadabra')
    b = set('alacazam')
    print(a)
    print(a - b)     # a 和 b 的差集
    print(a | b)     # a 和 b 的并集
    print(a & b)     # a 和 b 的交集
    print(a ^ b)     # a 和 b 中不同时存在的元素

    结果:
     {'Facebook', 'Baidu', 'Google', 'Taobao', 'Runoob', 'Zhihu'}
    Runoob 在集合中
    {'c', 'b', 'a', 'd', 'r'}
    {'d', 'r', 'b'}
    {'c', 'b', 'a', 'z', 'l', 'd', 'r', 'm'}
    {'a', 'c'}
    {'z', 'l', 'b', 'd', 'r', 'm'}
    
--------------------------------------------------------
  • 2.2数据类型的转换




  • 3.列表 list

#append添加列表元素
    list = ['Google', 'Runoob', 1997, 2000]
     
    print ("第三个元素为 : ", list[2])
    list[2] = 2001
    print ("更新后的第三个元素为 : ", list[2])
     
    list1 = ['Google', 'Runoob', 'Taobao']
    list1.append('Baidu')
    print ("更新后的列表 : ", list1)
    
    结果:
    第三个元素为 :  1997
    更新后的第三个元素为 :  2001
    更新后的列表 :  ['Google', 'Runoob', 'Taobao', 'Baidu']
-----------------------------------------------------------------------------
#del删除列表元素
    list = ['Google', 'Runoob', 1997, 2000]
     
    print ("原始列表 : ", list)
    del list[2]
    print ("删除第三个元素 : ", list)

    结果:
    原始列表 :  ['Google', 'Runoob', 1997, 2000]
    删除第三个元素 :  ['Google', 'Runoob', 2000]
----------------------------------------------------------------------------


    列表方法在菜鸟教学里有详细的实例,自行查看哈

  • 4.元组 tup

    元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用
    a = ()    #空元组
    a = (50,)    #只包含一个元素


  • 5.字典 dict

  • 5.1修改字典

    tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
     
    tinydict['Age'] = 8               # 更新 Age
    tinydict['School'] = "菜鸟教程"  # 添加信息
     
    print ("tinydict['Age']: ", tinydict['Age'])
    print ("tinydict['School']: ", tinydict['School'])

    结果:
    tinydict['Age']:  8
    tinydict['School']:  菜鸟教程
---------------------------------------------------------------------------------
  • 5.2删除字典

    tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
     
    del tinydict['Name'] # 删除键 'Name'
    tinydict.clear()     # 清空字典
    del tinydict         # 删除字典
     
    print ("tinydict['Age']: ", tinydict['Age'])
    print ("tinydict['School']: ", tinydict['School'])

    结果:
    Traceback (most recent call last):
      File "/runoob-test/test.py", line 9, in 
        print ("tinydict['Age']: ", tinydict['Age'])
    NameError: name 'tinydict' is not defined
-----------------------------------------------------------------------------


  • 6.集合 set

    集合(set)是一个无序的不重复元素序列。
    可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
----------------------------------------------------------------------------
  • 6.1添加元素

    thisset = set(("Google", "Runoob", "Taobao"))
    thisset.add("Facebook")
    print(thisset)
    {'Taobao', 'Facebook', 'Google', 'Runoob'}
---------------------------------------------------------------------------
    thisset = set(("Google", "Runoob", "Taobao"))
    thisset.update({1,3})
    print(thisset)
    {1, 3, 'Google', 'Taobao', 'Runoob'}
    thisset.update([1,4],[5,6])  
    print(thisset)
    {1, 3, 4, 5, 6, 'Google', 'Taobao', 'Runoob'}
  • 移除元素

    #s.remove( x )将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误

    thisset = set(("Google", "Runoob", "Taobao"))
    thisset.remove("Taobao")
    print(thisset)
    {'Google', 'Runoob'}
    thisset.remove("Facebook")   # 不存在会发生错误
    Traceback (most recent call last):
      File "", line 1, in 
    KeyError: 'Facebook'
-------------------------------------------------------------
    #s.discard( x )方法也是移除集合中的元素,且如果元素不存在,不会发生错误

    thisset = set(("Google", "Runoob", "Taobao"))
    thisset.discard("Facebook")  # 不存在不会发生错误
    print(thisset)
    {'Taobao', 'Google', 'Runoob'}
-------------------------------------------------------------
    thisset = set(("Google", "Runoob", "Taobao", "Facebook"))
    x = thisset.pop()
    print(x)
    Runoob
    #set 集合的 pop 方法会对集合进行无序的排列,然后将这个无序排列集合的左面第一个元素进行删除。

  • 7.条件语句

    import io
    import sys
    sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8')

    num = 9
    if num >= 0 and num <= 10:    # 判断值是否在0~10之间
        print("hello")
    # 输出结果: hello
     
    num = 10
    if num < 0 or num > 10:    # 判断值是否在小于0或大于10
        print("hello")
    else:
        print("undefine")
    # 输出结果: undefine
     
    num = 8
    # 判断值是否在0~5或者10~15之间
    if (num >= 0 and num <= 5) or (num >= 10 and num <= 15):    
        print("hello")
    else:
        print("undefine")
    # 输出结果: undefine
  • 循环语句

      import io
      import sys
      sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8')

      # while-----continue 和 break 用法
      i = 1
      while i < 10:   
          i += 1
          if i%2 > 0:     # 非双数时跳过输出
              continue
          print(i)         # 输出双数2、4、6、8、10
      print('--------------------------------')
      i = 1
      while 1:            # 循环条件为1必定成立
          print(i)
          i += 1
          if i%2 > 0:     # 非双数时跳过输出
              break
          else:
              i += 2
      print(i)

      # while … else 在循环条件为 false 时执行 else 语句块
      count = 0
      while count < 5:
         print (count, " is  less than 5")
         count = count + 1
      else:
         print (count, " is not less than 5")

      print("--------------------------")

      #循环语句可以有 else 子句,它在穷尽列表(以for循环)或条件变为 false (以while循环)
      #导致循环终止时被执行,但循环被 break 终止时不执行。
      # for
      for n in range(2, 10):
          for x in range(2, n):
              if n % x == 0:
                  print(n, '等于', x, '*', n//x)
                  break
          else:
              # 循环中没有找到元素
              print(n, ' 是质数')