Python基础 - 基本概念¶

1. 变量¶

  • 变量赋值

Python 中的变量赋值不需要类型声明。 每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。 等号(=)用来给变量赋值。

  • 多个变量赋值

Python允许你同时为多个变量赋值。例如:

In [ ]:
a = b = c = 1

以上实例,创建一个整型对象,值为1,三个变量被分配到相同的内存空间上。

也可以为多个对象指定多个变量。例如:

In [ ]:
a, b, c = 1, 2, "john"

以上实例,两个整型对象1和2的分配给变量a和b,字符串对象"john"分配给变量c。

2. 标准数据类型¶

在内存中存储的数据可以有多种类型。例如,一个人的年龄可以用数字来存储,他的名字可以用字符来存储。 Python 定义了一些标准类型,用于存储各种类型的数据。 Python有五个标准的数据类型:

  • Numbers(数字)
  • String(字符串)
  • List(列表)
  • Tuple(元组)
  • Dictionary(字典)

2.1 Numbers(数字)¶

数字数据类型用于存储数值。 他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象。 当你指定一个值时,Number对象就会被创建. Python支持四种不同的数字类型:

  • int(有符号整型)
  • float(浮点型)
  • complex(复数)

例:求从1到100的数字中所有既能被3整除,又能被5整除的数字有哪些?

In [ ]:
LsNum = []
for i in range(1,101):
    if i%3 == 0 and i%5 == 0 :
        LsNum.append(i)

print(LsNum)
[15, 30, 45, 60, 75, 90]

2.2 String(字符串)¶

字符串或串(String)是由数字、字母、下划线组成的一串字符。一般记为 :

In [ ]:
s = "a1a2···an"   # n>=0

例:输入一个字符串,把字符串拆分成两个等分 如果字符串长度是偶数,前一半和后一半的长度是相同的 如果字符串长度是奇数,则多出的一个字符加到前一半,如:'abcde',前一半是'abc',后一半是'de'

In [ ]:
StrInput = input("请输入字符串:")
StrLength = len(StrInput)

if StrLength % 2 == 0: 
    StrMid = int(StrLength/2)
    StrA = StrInput[:StrMid]
    StrB = StrInput[StrMid:]
else: #5
    StrMid = int((StrLength-1)/2) + 1
    StrA = StrInput[:StrMid]
    StrB = StrInput[StrMid:]
print(StrA,StrB)
请输入字符串:aaabbb
aaa bbb

2.3 List(列表)¶

List(列表) 是 Python 中使用最频繁的数据类型。

列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。

列表是写在方括号 [] 之间、用逗号分隔开的元素列表。

和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。

列表截取的语法格式如下:

变量[头下标:尾下标] 索引值以 0 为开始值,-1 为从末尾的开始位置。 list_slicing1_new1.png

  • 创建列表
In [ ]:
round=[]
round=[1,2,3,4,5]
  • 索引值
In [ ]:
print(round[1])
round[4]=76
2
  • 列表切片
In [ ]:
print(round[2:5])
[3, 4, 76]
  • 列表复制
In [ ]:
yy=round
yy[0]=23
print(round)
print(yy)

from copy import deepcopy
yy=deepcopy(round)
yy[0]=27
print(yy)
print(round)
[23, 2, 3, 4, 76]
[23, 2, 3, 4, 76]
[27, 2, 3, 4, 76]
[23, 2, 3, 4, 76]
  • 列表连接
In [ ]:
yy=yy+round
print(yy)

yy=yy+[100]
print(yy)
[27, 2, 3, 4, 76, 23, 2, 3, 4, 76]
[27, 2, 3, 4, 76, 23, 2, 3, 4, 76, 100]
  • 追加、删除和弹出
In [ ]:
yy.append(1)
print(yy)
yy=yy+[2]
print(yy)
yy.remove(2)
print(yy)
#yy=yy-[3]
[27, 3, 4, 76, 23, 3, 4, 76, 100, 1, 1, 1, 1, 2, 1, 2, 1]
[27, 3, 4, 76, 23, 3, 4, 76, 100, 1, 1, 1, 1, 2, 1, 2, 1, 2]
[27, 3, 4, 76, 23, 3, 4, 76, 100, 1, 1, 1, 1, 1, 2, 1, 2]
  • 列表排序
In [ ]:
yy.sort()
yy
Out[ ]:
[1, 1, 1, 1, 1, 1, 2, 2, 3, 3, 4, 4, 23, 27, 76, 76, 100]

2.4 Tuple(元组)¶

元组是另一个数据类型,类似于 List(列表)。 元组用 () 标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。

In [ ]:
my_points=[(1,1),(2,2),(7,6)]
point1=(3,4)
point2=(7,6)
print(point1 in my_points)
print(point2 in my_points)
False
True

2.5 Dictionary(字典)¶

字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。
两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过下标存取。
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值 key:value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:

In [ ]:
d = {key1 : value1, key2 : value2 }

py-dict-3.png

键必须是唯一的,但值则不必。
值可以取任何数据类型,但键必须是不可变的,如字符串,数字。
一个简单的字典实例:

In [ ]:
tinydict = {'name': 'runoob', 'likes': 123, 'url': 'www.runoob.com'}

py-dict-2.png

访问字典里的值¶

把相应的键放入到方括号中,如下实例:

In [ ]:
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
 
print ("tinydict['Name']: ", tinydict['Name'])
print ("tinydict['Age']: ", tinydict['Age'])
tinydict['Name']:  Runoob
tinydict['Age']:  7

修改字典¶

向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:

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

删除字典元素¶

能删单一的元素也能清空字典,清空只需一次操作。

显式删除一个字典用del命令,如下实例:

In [ ]:
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'])
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-5-2c5a70ab0a01> in <module>
      5 del tinydict         # 删除字典
      6 
----> 7 print ("tinydict['Age']: ", tinydict['Age'])
      8 print ("tinydict['School']: ", tinydict['School'])

NameError: name 'tinydict' is not defined
In [ ]:
list_key=['a','b','c','d','e']
list_values=[88,77,66,35,76]
#要找出e对应的值

for i in range(len(list_key)):
    if list_key[i]=='e':
        break;
print(list_values[i])

dic={'a':88,'b':77,'c':66,'d':35,'e':76}
print(dic['e'])

3. 控制流¶

  • if-else
  • if-elif-else
  • for 循环
  • while 循环

练习:求两个数字之间的素数

In [ ]:
for i in range(100,201):
    is_prime=True
    for j in range(2,i-1):
        if i%j == 0:
            is_prime=False
            break
    if is_prime==True:
        print(i,'is a prime.')
101 is a prime.
103 is a prime.
107 is a prime.
109 is a prime.
113 is a prime.
127 is a prime.
131 is a prime.
137 is a prime.
139 is a prime.
149 is a prime.
151 is a prime.
157 is a prime.
163 is a prime.
167 is a prime.
173 is a prime.
179 is a prime.
181 is a prime.
191 is a prime.
193 is a prime.
197 is a prime.
199 is a prime.

4. 函数¶

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。 函数能提高应用的模块性,和代码的重复利用率

In [ ]:
def is_prime(n):
    for i in range(2,n-1):
        if n%i==0:
            return False
    return True

for i in range(100,201):
    if is_prime(i)==True:
        print(i,'is a prime.')
101 is a prime.
103 is a prime.
107 is a prime.
109 is a prime.
113 is a prime.
127 is a prime.
131 is a prime.
137 is a prime.
139 is a prime.
149 is a prime.
151 is a prime.
157 is a prime.
163 is a prime.
167 is a prime.
173 is a prime.
179 is a prime.
181 is a prime.
191 is a prime.
193 is a prime.
197 is a prime.
199 is a prime.

5. 模块¶

Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。

模块让你能够有逻辑地组织你的 Python 代码段。

把相关的代码分配到一个模块里能让你的代码更好用,更易懂。

模块能定义函数,类和变量,模块里也能包含可执行的代码。