python基础知识说明
1.列出python中的标识符命名规则
- 标示符由字母、下划线和数字组成
- 数字不能开头
- 不能有特殊符号:,/,;,#
- python中的标识符是区分大小写的
- pycharm不要使用test开头来作为文件名,因为test开头会默认为是测试文件,eclipse无所谓
- 命名规则:见名知义、驼峰式命名
- 不允许开发者自己定义和关键字相同的名字的标示符
思考:下面的标示符哪些是正确的,哪些不正确为什么
fromNo12 from#12 my_Boolean my-Boolean Obj2 2ndObj myInt
test1 Mike2jack My_tExt _test test!32haha(da)ttint jack_rose jack&rose GUI G.U.I
不正确:from#12 2ndObj test!32haha(da)ttint jack&rose G.U.I
2.详细说明python中的数据类型
1.整数
Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等。
计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x前缀和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等等。
2.浮点数
浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x109和12.3x108是完全相等的。浮点数可以用数学写法,如1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。
整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差。
3.字符串
字符串是**以单引号'
或双引号"
**括起来的任意文本,比如'abc'
,"xyz"
等等。请注意,’‘或"“本身只是一种表示方式,不是字符串的一部分,因此,字符串’abc’只有a,b,c这3个字符。如果’本身也是一个字符,那就可以用”"括起来,比如"I’m OK"包含的字符是I,’,m,空格,O,K这6个字符。
如果字符串内部既包含’又包含"怎么办?可以用转义字符\来标识,比如:
'I\'m \"OK\"!'
表示的字符串内容是:
I'm "OK"!
转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\\表示的字符就是\,可以在Python的交互式命令行用print()打印字符串看看:
如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用r’‘表示’'内部的字符串默认不转义,可以自己试试:
如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用’’’…’’'的格式表示多行内容,
print('''hello
world
python
''')
4.布尔值
布尔值和布尔代数的表示完全一致,一个布尔值只有True、False两种值,要么是True,要么是False,在Python中,可以直接用True、False表示布尔值(请注意大小写),也可以通过布尔运算计算出来
布尔值可以用and、or和not运算。
and运算是与运算,只有所有都为True,and运算结果才是True:
5.空值
空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。
此外,Python还提供了列表、字典等多种数据类型,还允许创建自定义数据类型
怎样知道一个变量的类型呢?
在python中,只要定义了一个变量,而且它有数据,那么它的类型就已经确定了,不需要咱们开发者主动的去说明它的类型,系统会自动辨别
可以使用type(变量的名字),来查看变量的类型
a=10
a="abcd"
a=3.14
print(a)
print(type(a))
b='qwer'
print(b)
print(type(b))
str1='i\'m ok'
str2="i'm ok"
print(str1)
print(str2)
print('''hello
world
python
''')
flag=True
flag=False
str=None
6.字符串String
String字符串:不可变类型
1.下标索引
所谓下标,就是编号,就好比超市中的存储柜的编号,通过这个编号就能找到相应的存储空间
字符串实际上就是字符的数组,所以也支持下标索引,可通过下标索引来获取对应位置的值
从左边数下标是从0开始,从右边数是从-1开始。
如果想取出部分字符,那么可以通过下标的方法,(注意python中从左边数下标是从0开始,从右边数是从-1开始。)
2.切片(分片)
切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。类似substring
切片的语法:
[起始:结束:步长]
步长:表示下标变化的规律。
注意:选取的区间属于左闭右开型,即从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身)。
注意:如果步长为负数,则代表从右往左列出,起始位置要比介绍位置索引大
7.列表List
Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。
列表用[ ]标识,用len()函数可以获取list元素个数,可以用下标索引来获取指定位置的元素。
列表中存放的数据是可以进行修改的,比如"增"、“删”、“改”"
1.添加元素("增"append, extend, insert)
a.append(b) :将b完整追加到a中
a.extend(b):将表中元素一个一个取出来加到a中
a.insert(index,object): 在指定位置index前插入元素object
2.修改
修改元素的时候,要通过下标来确定要修改的是哪个元素,然后才能进行修改
3.查找
所谓的查找,就是看看指定的元素是否存在
in(存在),如果存在那么结果为true,否则为false
not in(不存在),如果不存在那么结果为true,否则false
index, count index和count与字符串中的用法相同
4删除:
del:根据下标进行删除,其实可以删除所有变量
pop:默认删除最后一个元素
remove:根据元素的值进行删除第一个
5.排序:
sort方法是将list按特定顺序重新排列,默认为由小到大,参数reverse=True可改为倒序,由大到小。
- 注意sort使用的时候元素的类型要一致
reverse方法是将list逆置。
6.按键值对形式输出列表中元素的下标和值: enumerate()
8.元组tuple
Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。
元组的元素不可修改,用()用作标识。
元素不可变指的是元素的指向不可变,当某个位置的元素指向一个list列表时,不可再指向其他列表,但是这个列表内的元素是可以被改变的。
1.访问
可以用下标来访问元组中元素
2.修改
python不允许修改元组的数据,包括不能删除其中的元素
9.字典dict和set
Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。
字典中的key不可以重复,如果有重复,覆盖之前的值
value可以重复
value可以为空
set:没有值的dict
dict是一个可变类型
- 字典和列表一样,也能够存储多个数据
- 列表中找某个元素时,是根据下标进行的
- 字典中找某个元素时,是根据’名字’(就是冒号:前面的那个值,例如上面代码中的’name’、‘id’、‘sex’)
- 字典的每个元素由2部分组成,键:值。例如 ‘name’:‘班长’ ,'name’为键,'班长’为值
若访问不存在的键,则会报错
在我们不确定字典中是否存在某个键而又想获取其值时,可以使用get方法,还可以设置默认值
注:通过key获取元素的value时,可能会有key不存在的情况,就就会报错。
还有一种方式可以获取值: 字典名.get(“key”)
这种方式如果key不存在的话不会报错,接收结果的对象为None 空值
-
修改元素:
字典的每个元素中的数据是可以修改的,只要通过key找到,即可修改
-
添加元素:
如果在使用 变量名[‘键’] = 数据 时,这个“键”在字典中,不存在,那么就会新增这个元素
-
删除元素
demo:del删除指定的元素
可变类型与不可变类型
-
可变类型,值可以改变
- 列表 list
- 字典 dict
- set (没有value的字典)
-
不可变类型,值不可以改变:
-
数值类型 int, long, bool, float
-
字符串 str
-
元组 tuple
-
3.列出python中的运算规则
1.算术运算符
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 | 两个对象相加 a + b 输出结果 30 |
- | 减 | 得到负数或是一个数减去另一个数 a - b 输出结果 -10 |
* | 乘 | 两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 200 |
/ | 除 | x除以y b / a 输出结果 2 |
// | 取整除 | 返回商的整数部分 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0 |
% | 取余(取模) | 返回除法的余数 b % a 输出结果 0 |
** | 幂 | 返回x的y次幂 a**b 为10的20次方, 输出结果 100000000000000000000 |
2.赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
= | 赋值运算符 | 把=号右边的结果给左边的变量 num=1+2*3 结果num的值为7 |
3.复合赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
+= | 加法赋值运算符 | c += a 等效于 c = c + a |
-= | 减法赋值运算符 | c -= a 等效于 c = c - a |
*= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
/= | 除法赋值运算符 | c /= a 等效于 c = c / a |
%= | 取模赋值运算符 | c %= a 等效于 c = c % a |
**= | 幂赋值运算符 | c **= a 等效于 c = c ** a |
//= | 取整除赋值运算符 | c //= a 等效于 c = c // a |
注意:Python中没有a++,a–,++a,–a等操作
4.逻辑运算符
运算符 | 逻辑表达式 | 描述 | 实例 |
---|---|---|---|
and | x and y | 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 | (a and b) 返回 20。 |
or | x or y | 布尔"或" - 如果 x 是 True,它返回 True,否则它返回 y 的计算值。 | (a or b) 返回 10。 |
not | not x | 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 | not(a and b) 返回 False |
5.比较(关系)运算符
运算符 | 描述 | 示例 |
---|---|---|
== | 检查两个操作数的值是否相等,如果是则条件变为真。 | 如a=3,b=3则(a == b) 为 true. |
!= | 检查两个操作数的值是否相等,如果值不相等,则条件变为真。 | 如a=1,b=3则(a != b) 为 true. |
<> | 检查两个操作数的值是否相等,如果值不相等,则条件变为真。 | 如a=1,b=3则(a <> b) 为 true。这个类似于 != 运算符 |
> | 检查左操作数的值是否大于右操作数的值,如果是,则条件成立。 | 如a=7,b=3则(a > b) 为 true. |
< | 检查左操作数的值是否小于右操作数的值,如果是,则条件成立。 | 如a=7,b=3则(a < b) 为 false. |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成立。 | 如a=3,b=3则(a >= b) 为 true. |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件成立。 | 如a=3,b=3则(a <= b) 为 true. |
4.列出python中的循环和分支
1. if elif else条件判断
if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>
age = input("请输入年龄:")
age = int(age)
if (age < 20):
print("小孩")
elif (age < 40):
print("青年")
else:
print("老年")
2.if嵌套
if 条件1:
满足条件1 做的事情1
满足条件1 做的事情2
...(省略)...
if 条件2:
满足条件2 做的事情1
满足条件2 做的事情2
...(省略)...
3.while循环
while 条件:
条件满足时,做的事情1
条件满足时,做的事情2
条件满足时,做的事情3
...(省略)...
4.while循环嵌套
while 条件1:
条件1满足时,做的事情1
条件1满足时,做的事情2
条件1满足时,做的事情3
...(省略)...
while 条件2:
条件2满足时,做的事情1
条件2满足时,做的事情2
条件2满足时,做的事情3
...(省略)...
# 九九乘法表
i = 1
while (i <= 9):
j = 1
while (j <= i):
print("%d*%d=%d" % (i, j, i * j), end='\t')
j += 1;
print()
i += 1
5.for循环
for 临时变量 in 列表或者字符串等:
循环满足条件时执行的代码
else:
循环不满足条件时执行的代码
# 九九乘法表
for i in range(1,10):
for j in range(1,i+1):
print("%d*%d=%d"%(i,j,i*j),end='\t')
print()
5.写一个计算器程序:用循环封装,从控制台输入数据和运算符,能够从控制台退出。
'''
写一个计算器程序:用循环封装,从控制台输入数据和运算符,能够从控制台退出。
@author:cw
'''
# 进行运算的函数
def operator(num1, num2, opt):
num1 = int(num1)
num2 = int(num2)
if (opt == "+"):
return num1 + num2
elif (opt == "-"):
return num1 - num2
elif (opt == "*"):
return num1 * num2
elif (opt == "/"):
return num1 / num2
# 判断数据是否符合要求
def judgeNum(num, id):
if (num == "q"):
return False
elif (num.isdigit() == False):
while (True):
print("输入错误!请重新输入第[", id, "]位数据")
num = input("请输入数据:")
if (num.isdigit()):
break
elif (num == "q"):
return False
return num
# 判断操作符是否符合要求
def judgeOpt(opt):
if (opt not in ["+", "-", "*", "/"]):
while (True):
print("操作符不符合要求,应为:[+,-,*,/]中的一个")
opt = input("请重新输入操作符:")
if (opt in ["+", "-", "*", "/"]):
return opt
else:
return opt
while (True):
n1 = input("请输入数据1:")
n1 = judgeNum(n1, 1)
if (n1 == False):
break
n2 = input("请输入数据2:")
n2 = judgeNum(n2, 2)
if (n2 == False):
break
opt = input("请输入操作符:")
opt = judgeOpt(opt)
result = operator(n1, n2, opt)
print("%s%s%s=%s" % (n1, opt, n2, result));