码迷,mamicode.com
首页 > 编程语言 > 详细

Python基础

时间:2018-08-05 21:26:02      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:ever   section   参数   sci   nbsp   更改   The   bin   value   

一、书写格式

Linux 下shell方式执行

执行方式:./test.py

文件内部:

  #!/usr/bin python3     (指定解释器位置)

  正文

ps:执行前需给予 hello.py 执行权限,chmod 755 test.py

Linux和Windows下解释器执行

  cd (python安装路径)

  python3 test.py

ps:在python3中 # -*- coding: UTF-8 -*- 不必写(python2解释器内部用ASCII码解释,所以需要声明字符编码为UTF-8)

注释

  当行注释:#

  多行注释:""" 被注释内容 """

二、基础语法

循环语句

if语句

1、if  -> elif -> elif

2、if 条件:

    pass  #不能省

  else:

    语句

while语句

 

基本数据类型

字符串(引号)

  name = "alex"

  name = ‘alex‘

  name = """alex"""

  name = ‘‘‘alex‘‘‘

ps:不能混用引号,python追求简洁漂亮

字符串加法:

  n1 = "alex"

  n1 = "nb"

  n3 = n1 + " " + n2

  # n3 = "alex nb"

字符串乘法:

  n1 = "alex"

  n2 = n1 * 10

字符串一旦创建不可修改,一旦修改或者拼接则重新生成新字符串

数字

  +, -, *, /, **, %, // (余 商)

布尔值 bool (java里是boolean)

True = 非零值(包括复数) / False = 0

None    ""   ()   []    {}   0   ------>   False

name = "魔法少女小圆"
# if "小魔" in name:
#     print(‘OK‘)
# else:
#     print(‘Error‘)

#Ctrl + / 批量注释

if ("小圆" not in name) == True:
    print(1)
else:
    print(2)

列表

不同于字符串,以链表方式存储,可以通过切片和索引的方式修改,可删除 del 删除索引或者切片

li = [12,"hello",["庞麦郎", 3, "world", ["mmp"]]]
print(len(li[2][3][0][2]))
print(li[1:3])    #切片,结果是列表
result: 
1
[‘hello‘, [‘庞麦郎‘, 3, ‘world‘, [‘mmp‘]]]
li = "Remember me"
new_li = list(li)
print(new_li)

result:
[R, e, m, e, m, b, e, r,  , m, e]

要想把列表里的元素全部拼接起来,需要先自己写一个 for 循环,将数字转化成字符串 str()然后 "".join(list) 即可

元组

可以认为是列表的二次加工,一级元素不能修改,但可以进入次级列表进行修改,类似于广义数组,为了与方法作区分,在元祖最后多加一个逗号,以示区分

tu = (21, ["sg"], (23, 24),)
print(tu[1][0][1], tu[2][1])

result:
g 24
s = "hello world"
print(tuple(s))
print(list(s))
print(tuple(list(s)))
print(list(tuple(s)))

result:
(h, e, l, l, o,  , w, o, r, l, d)
[h, e, l, l, o,  , w, o, r, l, d]
(h, e, l, l, o,  , w, o, r, l, d)
[h, e, l, l, o,  , w, o, r, l, d]

 

字典

字典是无序的,并且 key 值一一对应,后来居上,覆盖前者


info = {
1: "hello",
2: "hello",
0: "hi",
"key": "world",
True: "python", # 1 原本对应hello,现在对应python
False: "java", # 0 原本对应hi,现在对应java
(11, 22): "youxiu",
#[12, 22]: "Error",
#{1: "win"}: "Error",
}
print(info)
result: 

{1: ‘python‘, 2: ‘hello‘, 0: ‘java‘, ‘key‘: ‘world‘, (11, 22): ‘youxiu‘}

可以删除 del ,可以迭代,默认按照 key 循环,可以用keys(),value()专门输出键和键值

info = {
    1: "hello",
    1: "heo",
    0: "hi",
    "key": "world",
    True: "python",     # 1 原本对应hello,现在对应python
    False: "java",      # 0 原本对应hi,现在对应java
    (11, 22): "youxiu",
}
for item in info:
    print(item)

result:
1
0
key
(11, 22)

迭代输出键值对  item()方法

for k,v in info.items():
    print(k, v)

集合

集合内元素无序,是可变类型

frozenset()不可变集合

运算符

算术 赋值 运算符结果是数值

比较 逻辑 成员 运算符结果是布尔值

  !=     =====    <>     不等于

  not    非

  or      或

  and   与

  (  )提高优先级,先计算括号里面的

  支持 +=, -=, *=, /=, **=, %=, //=

  in / not in 成员运算符

 三、常用语句

输入输出

1.  inp = input() 接收的全是字符串,new_inp = int(inp)

2.  import getpass

   pwd = getpass.getpass(‘请输入密码:‘)

   #隐藏输入密码

3.  print(type(a), a) 可行

continue

   在循环里跳过某一个输出继续循环

   continue跳回循环  break跳出循环

in / not in

name = "魔法少女小圆"
# if "小魔" in name:
#     print(‘OK‘)
# else:
#     print(‘Error‘)

#Ctrl + / 批量注释

if "小圆" not in name:
    print(1)
else:
    print(2)

item(循环变量) len()range()

v = range(0, 100, 10)
v1 = range(10)

for item in v:
    print(item)

for item in v1:
    print(item)

result:
0
10
20
30
40
50
60
70
80
90
0
1
2
3
4
5
6
7
8
9

test = input(">>>")
print(test)

for item in range(len(test)):
    print(test[item])

result:
>>>alex
alex
a
l
e
x

 python2 中 range()  xrange()

 python3 中 range()即有xrange()功能

字符串格式化

name = "Joey"
hobby = "music"
age = 18
height = 1.75
print(I am %.4s, my age is %d,my height id %.2f and I like %s. % (name, age, height, hobby))
#  %s 可以是各种类型,但不易区分,可读性差
#  .xs可以截取x长度

print("I am %(Name)s, my age is %(Age)d." % {"Name":"Joey","Age":18})

result:
I am Joey, my age is 18,my height id 1.75 and I like music.
I am Joey, my age is 18.

格式化之前可以添加 -flag 选项,更改输出显示格式

print("root","x","k",sep = ":")

result:
root:x:k

format()字符串格式化

print("I am {}, my age is {}.".format("Joey", 18))
print("I am {1}, my age is {0}.".format(18, "Joey"))
print("I am {name}, my age is {age}.".format(name="Joey", age=18))
print("I am {name}, my age is {age}.".format(**{"name": "Joey", "age": 18}))  # 字典
print("I am {0[0]}, my age is {1[1]}.".format([0, 1], ["Joey", 18]))
print("I am {:s}, my age is {:d}.".format(*["Joey", 18]))  # 列表

I = ["Joey", 18]
print("I am {}, my age is {}.".format(*I))

print("numbers: {:b}, {:o}, {:d}, {:x}, {:X}, {:%}".format(15, 15, 15, 15, 15, 0.1508762385, 2))

result:
I am Joey, my age is 18.
I am Joey, my age is 18.
I am Joey, my age is 18.
I am Joey, my age is 18.
I am 0, my age is 18.
I am Joey, my age is 18.
I am Joey, my age is 18.
numbers: 1111, 17, 15, f, F, 15.087624%

 

 四、魔法方法

整型的魔法

在python3里所有的整型都是int型,不区分long,short,长度足够长

  1. int() 将字符串转换成数字  (type()方法可以显示类型)

   int( num, base=2/8/16 )   参数base指定原转换数字的类型,默认按照10进制转化

  2. bit_length() 字节长度,给出当前数字的二进制至少用几个字节表示

字符串的魔法

  1. capitalize()  首字母大写

  2. casefold()  适用于更多的大小写转换, lower()只适用于英文字母

  3. center( size, ‘*‘ ) size 是总的占位数,必须填写; * 可有可无,必须是一个字符,填充空白

  4. count( ‘str’, num1, num2 )  统计传入字符串 str 在原字符串中的个数;num1 起始位置,num2 结束   位置

  5. endwith( ‘str‘ )  是否以 str 结尾

  6. startswith( ’str‘ )  是否以 str 开头

  7. find( ‘str’, num1, num2 )  从 num1到 num2 寻找,获取第一次出现的位置;[ num1 , num2 ) 左开   右闭

  8. format ()  格式化输出,{ } 占位符

name1 = I am {name}
print(name1)
v1 = name1.format(name=alex)
print(v1)

test = I am {0}, age:{1}
print(test)
v = test.format(alex, 19)
print(v)
I am {name}
I am alex
I am {0}, age:{1}
I am alex, age:19

  9. format_map()  传入字典

test = I am {name}, age:{a}
print(test)
v = test.format_map({name: alex, a:19})
print(v)
I am {name}, age:{a}
I am alex, age:19

  10. index()  与 find()比较,index()找不到报错,find()找不到返回 -1

  11. isalnum()  Is all number or alphabet ?

  12. expandtabs( num )  以 num 为单位分割,遇 \t 补全为 num 个,制表效果明显

s = "12345678\t9"
v = s.expandtabs(6)
print(v, len(v))

result:
12345678    9 13
test = "username\temail\tpassword\nxiaoyuan\tyuan@qq.com\t123\nxingzi\tying@qq.com\t234\nshayejia\tsha@qq.com\t345"
v = test.expandtabs(20)
print(v)

result:
username            email               password
xiaoyuan            yuan@qq.com         123
xingzi              ying@qq.com         234
shayejia            sha@qq.com          345

  13. isalpha()  Are they characters ?Not nunbers 字母或汉字

  14. isdigit() 更广泛的数字(序号等) isdecimal()阿拉伯数字

  15. isidentifier()  字母 数字 下划线 组成的表示符

  16. islower()  是否是小写

  17. isnumeric()  和 isdigit() 类似,但更厉害,可以识别中文的数字

rmb = "一百万"
dollar = "million"
print(rmb.isnumeric(), dollar.isnumeric())

result:
True False

  18. isprintable()  不能包含 \n \t 等,字符串均可见,可显示

  19. isspace()  是否全是空格

  20. istitle()  标题,首字母大写

  21. title()  转换成标题

  22. join()  

test = "唯我超电磁炮永世长存!"
print(test)
v = " ".join(test)
print(v)

result:
唯我超电磁炮永世长存!
唯 我 超 电 磁 炮 永 世 长 存 !

  23. ljust()  rjust()  center()

test = "唯我超电磁炮永世长存!"
print(test)
v = test.ljust(20, "*")
print(v)
k = test.rjust(20, "*")
print(k)

result:
唯我超电磁炮永世长存!
唯我超电磁炮永世长存!*********
*********唯我超电磁炮永世长存!

  24. zfill()  只能填充 0

  25. lower()  islower()  upper()  isupper()

  26. strip()  lstrip()  rstrip()  去掉左右的空白和 \n \t ,移除指定字符,匹配最大子串

    还可以传入参数,去掉指定字符,类似于正则匹配,把传入字符串的字串与原字符串匹配后去掉

  27. maketrans()  translate()  根据对应关系替换

test = "awioutewhjgwutyuwiouorvsm"
m = str.maketrans("aeiou", "12345")
new_test = test.translate(m)
print(new_test)

result:
1w345t2whjgw5ty5w3454rvsm

  28. partition()  rpartition()  split()  rsplit()  作分割,用于设计正则表达式

test = "awioutewhjgwutyuwiouoervsm"
v = test.partition(e)
v1 = test.rpartition(e)
print(v)
print(v1)
#但是 o 得不到 在设计计算器时用partition
print(test.split(o, 1))
print(test.split(o, 2))
print(test.split(o, 3))
print(test.rsplit(o, 1))
print(test.rsplit(o, 2))
print(test.rsplit(o, 3))

result:
(‘awiout‘, ‘e‘, ‘whjgwutyuwiouoervsm‘)
(‘awioutewhjgwutyuwiouo‘, ‘e‘, ‘rvsm‘)
[‘awi‘, ‘utewhjgwutyuwiouoervsm‘]
[‘awi‘, ‘utewhjgwutyuwi‘, ‘uoervsm‘]
[‘awi‘, ‘utewhjgwutyuwi‘, ‘u‘, ‘ervsm‘]
[‘awioutewhjgwutyuwiou‘, ‘ervsm‘]
[‘awioutewhjgwutyuwi‘, ‘u‘, ‘ervsm‘]
[‘awi‘, ‘utewhjgwutyuwi‘, ‘u‘, ‘ervsm‘]

补:
value = "5 + 9"
v1, v2 = value.split(‘+‘)
v1 = int(v1)
v2 = int(v2)
v1+v2      --------可以用于计算

  29. splitlines()  只能根据换行符分割, 传递参数True 保留换行符,False 不保留换行符

  30. startwith()  endswith()  开头结尾

  31. swapcase()  大小写转换

  32. replace( “ 被替换字符串 ”, “替换字符串” , num )  num 从头开始替换个数  

列表的魔法

  1. append()

li = []
v = li.append([3, ["hahaha", 324]])  #最后追加一个元素
print(v)
print(li)

result:
None
[[3, [hahaha, 324]]]

  2. clear()  清空

  3. copy()  浅拷贝

  4. count( value )  查找出现次数

  5. extend( iterable )  iterable 可迭代对象, 追加一个列表里的所有元素,扩展原列表

li = [12,23,34]
li.extend(["hello"])
print(li)
li.extend("world")
print(li)

result:
[12, 23, 34, hello]
[12, 23, 34, hello, w, o, r, l, d]

  6. index()  获取第一个索引位置

  7. insert( index )  插入值

  8. pop( index )  弹出,默认最后一个

  9. remove( value )  删除第一个 value

ps:pop remove del clear 删除

  10. reverse()  反转

  11. sort( reverse=True/False)  排序(正序或逆序)

元组的魔法

  1. count()  获取指定元素在元组中出现的次数

  2. index( value,start,end )  获取指定元素的索引

字典的魔法

  1. clear()

  2. copy()  浅拷贝

  3. fromkeys( keys,values )  静态方法

  4. get( key,defualt_value )  默认没找到返回 0

  5. pop( key,defualt_value )  弹出 key de value,未找到返回 defualt_value

  6. popitem()  弹出一对键值,用两个变量接收

  7. setdefualt ( key ,value ) 设置值 如果 key 有的话, value

  8. update( key1=value1, key2=value2 )  更新值 

  9. keys()values()items()

集合的魔法

  1. add()  添加元素,只能添加一个

  2. clear()  清空元素

  3. copy()  拷贝

  4. pop()  弹出

  5. remove()  删除指定元素,不存在报错

  6. discard()  删除指定元素,不存在跳过

  7. set()  扔进集合里,可以去重,但丢失了顺序

集合运算

  8. intersection()  求交集 & (没有+)

  9. union()  求并集 |

  10. difference()  求差集 -

  11. symmetric_difference()  求交叉补集 ^

  12. difference_update

  13. intersection_update()

  14. isdisjoint()  判断是否有交集

  15. issubset()  是否是子集   <=

  16. issuperset()  是否是父集  >=

  17. update()  更新元素,更新多个值,可以传入元组,列表

ps: &  |  ^  -  >   >=  <   <=   (没有 + )

 五、练习

用户登陆(三次机会重试)

 1 #!/urs/bin python3.6
 2 
 3 count = 0
 4 while count < 3:
 5     user = input(>>>)
 6     pwd = input(>>>)
 7     if user == alex and pwd == 123:
 8         print(欢迎登录)
 9         print(...........)
10         break
11     else:
12         print(用户名或密码错误)
13     count += 1

 

Python基础

标签:ever   section   参数   sci   nbsp   更改   The   bin   value   

原文地址:https://www.cnblogs.com/zhangzixiang/p/9419181.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!