有编程基础的Python入门

我在想要学习Python时找了很多教程,并没有找到有编程基础学Python的简洁易懂的教程,于是写下了这篇文章,希望能够帮到他人,也留作我的学习笔记,这里参考了 菜鸟教程Python3 教程 。本文省略了许多与C/C++Java类似的共同基础知识点,这里默认读者都已经掌握。

基础语法

首先经典:

print ("Hello World!")  # 这是注释

然后开始学习吧

Python最具特色的就是使用缩进来表示代码块,不需要使用大括号{},而且行尾不需要加分号,写多行需要加\

if False :
    print ("1")
elif 1 :
    print ("2", end = " ")  # 不换行输出要加上 end
    print ("3")
else:
    print ("4")

字符串切片str[start:end],其中start(包含)是切片开始的索引,end(不包含)是切片结束的索引
字符串的切片可以加上步长参数step,语法格式如下:str[start:end:step]

str='0123456789' # 注意字符串是单引号
 
print(str[0:-1])           # 输出 012345678(从右往左以 -1 开始)
print(str[2:])             # 输出 23456789
print(str[1:5:3])          # 输出 14(步长为3)
print(str * 2)             # 输出字符串两次
print(r'hello\nrunoob')     # 在字符串前面添加一个 r,表示原始字符串,不会发生转义,这里的 r 指 raw,即 raw string

数据类型

  • 可以这样赋值:
a, b, c = 1, 2, "runoob"
  • 冷知识:在 Python 3 里,只有一种整数类型 int,表示为长整型

  • 内置的type()函数可以用来查询变量所指的对象类型,还可以用isinstance()来判断

a, b, c, d = 20, 5.5, True, 4+3j
print(type(a), type(b), type(c), type(d))
# 输出 <class 'int'> <class 'float'> <class 'bool'> <class 'complex'>
isinstance(a, int)
# 输出 True

虽然感觉没什么用。二者还有一点区别type()不会认为子类是一种父类类型,而isinstance()相反,这里不作赘述

  • TrueFalse可以和数字相加,True==1False==0

  • 使用del删除对象

del var_a, var_b
  • 数值的除法包含两个运算符:/返回一个浮点数,//返回一个整数

  • Python不支持单字符类型,单字符在Python中也是作为一个字符串使用

  • 单双引号不作区分

  • C字符串不同的是,Python字符串不能被改变

word = 'Python'
print(word[0], word[5])  # 输出自带空格
# 输出 P n
  • andornot表示与或非

列表、元组、集合与字典

  • 分别如下定义
list = ['abcd', 786 , 2.23, 'runoob', 70.2]  # 列表
tuple = ('abcd', 786 , 2.23, 'runoob', 70.2)  # 元组
sites = {'Google', 'Taobao', 'Runoob', 'Facebook', 'Zhihu', 'Baidu'}  # 集合
dict = {'name' : 'runoob','code' : 1, 'site' : 'www.runoob.com'}  # 字典
  • 元组tuple与列表list类似,不同之处在于元组的元素不能修改。元组写在小括号()里,元素之间用逗号隔开
  • 二者只有一个元素时创建需要带逗号,因为不带逗号会被认为括号是运算符
list = [23,]
tuple = (23,)
print (list)
print (tuple)

输出

[23]
(23,)
  • 创建一个空集合必须用set()而不是{ },因为{ }是用来创建一个空字典
  • 字典还可如下定义
dict = {}
dict['one'] = "1 - 菜鸟教程"
dict[2]     = "2 - 菜鸟工具"
print (dict.keys())   # 输出所有键
print (dict.values()) # 输出所有值

推导式

  • 列表推导式,定义为:
[表达式 for 变量 in 列表] 
[out_exp_res for out_exp in input_list]

或者 

[表达式 for 变量 in 列表 if 条件]
[out_exp_res for out_exp in input_list if condition]

例如输出长度大于 3 的字符串的大写形式:

names = ['Bob', 'Tom', 'alice', 'Jerry', 'Wendy', 'Smith']
new_names = [name.upper() for name in names if len(name) > 3]
print(new_names)
  • 元组、集合、字典推导式和列表推导式很像,其中元组用()定义,集合和字典用{}定义

迭代器与生成器

  • 迭代器对象从集合的第一个元素开始访问,只能往前不会后退。迭代器有两个基本的方法:iter()next()
list=[1, 2, 3, 4]
it = iter(list)  # 创建迭代器对象
for x in it:
    print (x, end=" ")
  • 使用了yield的函数被称为生成器generator。生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。当在生成器函数中使用yield语句时,函数的执行将会暂停,并将yield后面的表达式作为当前迭代的值返回
def countdown(n):
    while n > 0:
        yield n
        n -= 1
 
# 创建生成器对象
generator = countdown(5)
 
# 通过迭代生成器获取值
print(next(generator))  # 输出: 5
print(next(generator))  # 输出: 4
print(next(generator))  # 输出: 3
 
# 使用 for 循环迭代生成器
for value in generator:
    print(value)  # 输出: 2 1

函数

  • 基本定义:
def 函数名(参数列表):
    函数体
  • Python中,类型属于对象,对象有不同类型的区分,变量是没有类型的,例如:a=[1,2,3],其中[1,2,3]List类型,而变量a是没有类型,它仅仅是一个对象的引用(一个指针)
  • Python中,stringstuples、和numbers是不可更改的对象,而listdict等则是可以修改的对象:
    • 不可变类型:变量赋值a=5后再赋值a=10,这里实际是新生成一个int值对象10,再让a指向它,而5被丢弃,不是改变a的值,相当于新生成了a,在参数传递中类似于C++的值传递
    • 可变类型:变量赋值la=[1,2,3,4]后再赋值la[2]=5则是将list la的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了,在参数传递中类似于C++的引用传递

但是在Python中一切都是对象,严格意义我们不能说值传递还是引用传递,我们应该说传不可变对象和传可变对象。

  • 使用关键字参数(形如a=1)允许函数调用时参数的顺序与声明时不一致,因为Python解释器能够用参数名匹配参数值,比如:
def printinfo( name, age ):
   print ("name:", name)
   print ("age:", age)
   return

printinfo( age = 20, name = "Heait" )
  • 匿名函数lambda定义如下:
lambda arguments: expression

lambda函数是一种小型、匿名的、内联函数,它可以具有任意数量的参数,但只能有一个表达式,例如:

x = lambda a, b: a + b
print (x(5, 6))  # 输出 11

数据结构

  • 列表可以实现栈,但由于它删除队头元素时间复杂度是O(n)的,所以一般用双端队列collections.deque实现队列,具体操作自行搜索资料,这里不再赘述
  • 使用del语句可以从一个列表中根据索引来删除元素,例如del a[2:4]
  • 在字典中遍历时,关键字和对应的值可以使用items()方法同时解读出来:
dic = {'Geralt': 'the brave', 'Ciri': 'the pure'}
for k, v in dic.items():
    print(k, v)

输入和输出

  • input()函数接受一个标准输入数据,返回为string类型
a, b = map(int, input().split())
print (a + b)
  • 格式化输出:
print ('这篇文章作者是:{}'.format('Heait'))
print ('创作年份是:%d' % 2024)
  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值