1. Operatoren
1
ps:Beispiel 1:
Python2.7-Beispiel
#!/usr/bin/env python # -*- coding:utf-8 -*- #Author: nulige #算数运算符 from future import division #python2.x必须引入division模块。python3.x不需要。 val = 9 / 2 print(val)
1 4.5
#!/usr/bin/env python # -*- coding:utf-8 -*- #Author: nulige #算数运算符 val = 9 / 2 print(val)
1 4.5
ps:
1 a = 1 > 5
3. Zuweisungsvorgang:
ps;
ps:
1 a = a + 1 a+=1
Ausführungsergebnis:
#!/usr/bin/env python # -*- coding:utf-8 -*- #Author: nulige start = 1 start = start + 1 #加 减乘 除 一样 print(start)
1 2
ps:
Beispiel1 a = 1>6 or 1==1
>>> a = 0 >>> if a:print('a') ... >>> a = 1 >>> if a:print('a') ... a >>> False False 或 >>> True True
ps: Beispiel für in:
bezieht sich auf Ist das? SB in der-Zeichenfolge
oben? Wenn ja, wird True zurückgegeben Methode 1: Methode zwei:#!/usr/bin/env python # -*- coding:utf-8 -*- #Author: nulige name = "郑建文" if "建文" in name: print('ok') else: print('Error')
1 ok
#!/usr/bin/env python # -*- coding:utf-8 -*- #Author: nulige #成员运算符 s = "ALex SB" ret = "SB" in s #指的是这个SB是不是在上面那个字符串中,在就返回True print(ret)
1 True
#!/usr/bin/env python # -*- coding:utf-8 -*- #Author: nulige #成员运算符 s = "ALex SB" ret = "RSB" in s #指的是这个RSB是不是在上面那个字符串中,如果不在就返回False print(ret)
1 False
Beispiel 1:
Ausführungsergebnis:
#!/usr/bin/env python # -*- coding:utf-8 -*- #Author: nulige name = "郑建文" if "文1" not in name: print('1') else: print ('2')
1 1
Ausführungsergebnis:
#!/usr/bin/env python # -*- coding:utf-8 -*- #Author: nulige #粒度大 li = ['alex','eric','rain'] ret = "alex" not in li #在里面就是False,不在里面就是Ture print(ret)
1 False
Ternäre Operation
Wenn die Bedingung wahr ist: Ergebnis = Wert 1Wenn die Bedingung falsch ist: Ergebnis = Wert 2
1 result =值1 if 条件 else 值2
>>> a,b,c = 1,3,5 >>> d =a if a >b else c >>> d 5 >>> d = a if a <b else c >>> d 1 >>> if a >b:d=a ... else:d=c ...
8. Bitoperation
Operatorpriorität#!/usr/bin/python a = 60 # 60 = 0011 1100 b = 13 # 13 = 0000 1101 c = 0 c = a & b; # 12 = 0000 1100 print "Line 1 - Value of c is ", c c = a | b; # 61 = 0011 1101 print "Line 2 - Value of c is ", c c = a ^ b; # 49 = 0011 0001 print "Line 3 - Value of c is ", c c = ~a; # -61 = 1100 0011 print "Line 4 - Value of c is ", c c = a << 2; # 240 = 1111 0000 print "Line 5 - Value of c is ", c c = a >> 2; # 15 = 0000 1111 print "Line 6 - Value of c is ", c
String
Das wohl wichtigste neue Feature von Python 3 ist die klarere Unterscheidung zwischen Text und Binärdaten. Text ist immer Unicode und wird durch den Typ str dargestellt, und Binärdaten werden durch den Typ bytes dargestellt. Python 3 vermischt str und bytes nicht implizit, was die Unterscheidung zwischen den beiden besonders deutlich macht. Sie können weder Zeichenfolgen und Bytepakete verketten noch nach Zeichenfolgen in Bytepaketen suchen (und umgekehrt), noch können Sie Zeichenfolgen an Funktionen übergeben, die Bytepakete als Parameter akzeptieren (und umgekehrt).
Bytes in Zeichenfolgenzeichen
Typkonvertierung
说明:字符串转(string)转成bytes类型,再转成string。 示例 执行结果: 十一、进制 16位数表示方法 16进制与二进制对应关系 二进制转换成十六进制的方法:取四合一法,即从二进制的小数点为分界点,向左(或向右)每四位取成一位 图1 组分好以后,对照二进制与十六进制数的对应表(如图1中所示),将四位二进制按权相加,得到的数就是一位十六进制数,然后按顺序排列,小数点的位置不变哦,最后得到的就是十六进制数哦,如图2所示。 图2 注意16进制的表示法,用字母H后缀表示,比如BH就表示16进制数11;也可以用0X前缀表示,比如0X23就是16进制的23.直观表示法如图3所示。 图3 这里需要注意的是,在向左(或向右)取四位时,取到最高位(最低位)如果无法凑足四位,就可以在小数点的最左边(或最右边)补0,进行换算,如图4所示。 图4 下面看看将16进制转为二进制,反过来啦,方法就是一分四,即一个十六进制数分成四个二进制数,用四位二进制按权相加,最后得到二进制,小数点依旧就可以啦。如图5所示。 图5 十一、一切皆对象 对于Python,一切事物都是对象,对象基于类创建 所以,以下这些值都是对象: "wupeiqi"、38、['北京', '上海', '深圳'],并且是根据不同的类生成的对象。 二、基本数据类型 1、数字:1231 ps: age = 18 2、int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647,而.在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807 ps: 执行结果: 执行结果: 3、将16进制转成10进制 执行结果: 常识: 1个字节=8位 1个汉字=3个字节 gb2312=2汉字 utf-8=3汉字(表示:最少3个汉字) 执行结果: 2、字符串: 表示方法: a1 = "asdf" #第一种 “” a1 = ‘ffa’ #第二种‘’ a1 ="""assdfafdsafdas""" #第三种“““ ””” 1、首字母大写:capitalize() 执行结果: 2、功能:所有变小写 二者对比:casefold更牛逼,很多未知的对相应变小写 执行结果: 3、设置宽度并将内容居中 执行结果: 4、去字符串中寻找,寻找子序列出现的次数 执行结果: 5、查看是否已什么结尾 执行结果: 6、从开始往后面找,找到第一个之后,获取其位置,未找到返回一个-1 执行结果: 7、格式化输出,将一个字符串中的占位符替换为指定的值 执行结果: 9、test.format_map的方法类似format 区别如下图 执行结果: 9、判段字符串中是否只包含字母和数字 执行结果: 10、expandtabs,断句20,\t表示六个字符,不够的空格补齐6个。 执行结果: 3、long(长整型) 为什么会有这个概念呢? 因为在Python2.2起,如果放置在内存里的数特别大发生溢出,Python就会自动将整型数据转换为长整型,但是现在,在Python3里就不存在长整型这么一说了,同意都是整型。 简单理解就是带有小数的数字 5、complex(复数) 复数是由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y呢是复数的虚数部分,这里的x和y都是实数。 5、布尔值(0或1) 就是真和假。 True/False a4 = True #真 a5 = False #假 7、查看数据类型(type) 如何理解呢? break: 只能跳出当前循环,当前这一套循环就结束了。 continue: 跳出当次循环,然后呢还会去继续下一次别的循环。 for循环示例1: 执行结果: 原理图: for循环示例2: 执行结果: 原理图: for循环示例3: 执行结果: for循环示例4: 执行结果: 输入三次数字,按回车就继续,按n 就退出。 原理: for循环示例5: 执行结果: 原理图: for循环示例6: 说明:打印五次hehe... 执行结果: for循环示例7: 执行结果: PyCharm代码调试 break和continue的区别 示例1: 执行结果: 示例2: 执行结果: 说明: 在第二次的if判断中,我执行条件,如果j小于2就跳出当次循环,继续一下次循环 下面我们就看看break的使用 同样的代码,咋们接着看 0 小结:二者的区别,continue用于有很多次循环,然后呢,我不希望哪次循环执行下面的动作,就可以了使用continue ,而break呢就是我这次循环了以后我想跳出去不在循环,或者我写了一段代码,我想跳出去看看代码是否能执行,就可以用break。 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 流程图 实现代码 执行结果: 说明:输入正确用户名和密码。比对正确,显示欢迎信息。 说明:输入三次错误的用户名和密码,第三次还错误就锁定。 三、思路和遇到的坑。 1、把正确的用户名密码,存放在一个文本文件中。 2、用户名与密码,是两个独立的字符串,存放的时候把它俩加在一起,变成了“用户名密码”。 3、获取输入的用户名密码后,同样把用户名与密码拼接为“用户名密码”,来与文件中记录的用户名密码进行逐行对比。 4、坑!记录的文件中有换行符\n,也就是说“用户名密码\n”,但是输入的却没有“用户名密码”,导致字符串效验总是失败。 5、通过strip("\n")来去掉换行符。 python strip()函数 去空格\n\r\t函数的用法 在Python中字符串处理函数里有三个去空格(包括'\n', '\r', '\t', ' ')的函数: strip 同时去掉左右两边的空格 具体示例如下: 声明:s为字符串,rm为要删除的字符序列 注意: >>> a = ' 123' 2.这里的rm删除序列是只要边(开头或结尾)上的字符在删除序列内,就删除掉。 >>> a = '123abc' 作业二:多级菜单 三级菜单 可依次选择进入各子菜单 所需新知识点:列表,字典 Das obige ist der detaillierte Inhalt vonEinführung in grundlegende Datentypen in Python-Lerngrundlagen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author: huzhihua
#import login
msg = "我爱北京天安门"
print(msg)
print(msg.encode(encoding="utf-8"))
print(msg.encode(encoding="utf-8").decode(encoding="utf-8"))
我爱北京天安门
b'\xe6\x88\x91\xe7\x88\xb1\xe5\x8c\x97\xe4\xba\xac\xe5\xa4\xa9\xe5\xae\x89\xe9\x97\xa8'
我爱北京天安门
数字 int ,所有的功能,都放在int里
a1 = 123
a1 = 456
1、将字符串转换为数字
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author: nulige
a = "123"
print(type(a),a) #输出他是什么类型,并转换为数字
b = int(a)
print(type(b),b) #输出他是什么类型,并转换为数字
(<type 'str'>, '123')
(<type 'int'>, 123)
2、把这个字符串以16进制的方式转成10进制
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author: nulige
#二进制表示方法:
#00 10 11 #二进制
#1 2 3 #十进制
#把这个字符串以16进制的方式,转成10进制
num = "0011" #字符串
int(num)
v = int(num, base=2) #base=2 以二进制的方式进行
v = int(num, base=16) #base=16 就是转成16进制
print(v)
1 17
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author: nulige
#把b以16进制的方式转成10进制
num = "b"
v = int(num,base=16)
print(v)
1 11
4、当前数字的二进制,至少用n位表示
#当前数字的二进制,至少用n位表示
age = 5
# 1 1 #表示二进制,用几位表示
# 2 10
# 3 11
# 4 100
# 5 101
r = age.bit_length()
print(r)
1 3 #表示位数
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author: nulige
#首字母大写
test = "aLex"
v = test.capitalize() #首字母大写
print(v)
1 Alex
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author: nulige
#所有变小写,casefold更牛逼,很多未知的对相应变小写
test = "aLex"
v1 = test.casefold()
print(v1)
v2 = test.lower()
print(v2)
1 alex2 alex
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author: nulige
# 3、设置宽度并将内容居中
# 20代指总长度
# * 代表空白未知填充 ,一个字符,可有可无
a1 = "alex"
ret = a1.center(20, '*')
print(ret)
1 ********alex********
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author: nulige
# 去字符串中寻找,寻找子序列出现的次数
a1 = "alex is alph"
ret = a1.count("a")
ret = a1.count("al",0,10)
print(ret)
1 2
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author: nulige
# 查看是否已什么结尾
# 查看是否已什么开始
name = "xiaoMing"
v = name.endswith('g')
v1 = name.startswith('e')
print(v)
print(v1)
1 True2 False
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author: nulige
# 6、从开始往后面找,找到第一个之后,获取其位置,未找到返回一个-1
name = "xiaoming"
v = name.find('ao',2,6)#从那个位置开始找 前面的是大于等于 后面是小于
# print(v)
name = "xiaoming" #index 用法同find 但是如果index找不大值直接报错
v = name.index("ming")
print(v)
1 4
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author: nulige
#格式化输出,将一个字符串中的占位符替换为指定的值
test = 'i am {name},age {a}'
print(test)
v = test.format(name = 'xiaoming',a = 24)
print(v)
test = 'i am {0},age {1}'
print(test)
v = test.format('xiaoming',24)
print(v)
i am {name},age {a}
i am xiaoming,age 24
i am {0},age {1}
i am xiaoming,age 24
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author: nulige
#test.format_map的方法类似format 区别如下图
test = 'i am {name},age {a}'
print(test)
v = test.format(name = 'xiaoming',a = 24)
v1 = test.format_map({"name":"xiaoming","a":19})
print(v)
print(v1)
i am {name},age {a}
i am xiaoming,age 24
i am {0},age {1}
i am xiaoming,age 24
name = "uuuuaa888"
v = name.isalnum()
print(v)
1 True
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author: nulige
#expandtabs,断句20,\t表示六个字符,不够的空格补齐6个。
test = "username\temail\tpassword\nlaiying\tying@q.com\t123\nlaiying\tying@q.com\t123\nlaiying\tying@q.com\t123"
v = test.expandtabs(20)
print(v)
username email password
laiying ying@q.com 123
laiying ying@q.com 123
laiying ying@q.com 123
>>> type(1)
<class 'int'>
>>> type(1.2)
<class 'float'>
>>> type(jixuege)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'jixuege' is not defined
上面报错原因就是没有用双引号引起来,他就不是字符串,而是认为是一个变量。
>>> type("jixuege")
<class 'str'>
三、for和while循环
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author: nulige
for i in range(10):
print("loop",i)
loop 0
loop 1
loop 2
loop 3
loop 4
loop 5
loop 6
loop 7
loop 8
loop 9
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author: nulige
for i in range(0,10,2):
print("loop",i)
loop 0
loop 2
loop 4
loop 6
loop 8
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author: nulige
for i in range(0,10,3):
print("loop",i)
loop 0
loop 3
loop 6
loop 9
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author: nulige
age_of_oldboy = 56
count = 0
while count <3:
guess_age = int(input("guess age:"))
if guess_age == age_of_oldboy :
print("yes, you got it. ")
break
elif guess_age > age_of_oldboy:
print("think smaller... ")
else:
print("think bigger!")
count +=1
if count == 3:
countine_confirm = input("do you want to keep guessing..?")
if countine_confirm != 'n':
count = 0
else:
print("you have tried too many times..fuck off")
guess age:1
think bigger!
guess age:23
think bigger!
guess age:3
think bigger!
do you want to keep guessing..?
guess age:1
think bigger!
guess age:2
think bigger!
guess age:3
think bigger!
do you want to keep guessing..?n
you have tried too many times..fuck off
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author: nulige
age_of_oldboy = 56
for i in range(3):
guess_age = int(input("guess age:"))
if guess_age == age_of_oldboy :
print("yes, you got it. ")
break
elif guess_age > age_of_oldboy:
print("think smaller... ")
else:
print("think bigger!")
else:
print("you have tried too many times..fuck off")
guess age:23
think bigger!
guess age:58
think smaller...
guess age:56
yes, you got it.
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author: nulige
for i in range(0,10):
if i <5:
print("loop ",i)
else:
continue
print("hehe...")
loop 0
hehe...
loop 1
hehe...
loop 2
hehe...
loop 3
hehe...
loop 4
hehe...
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author: nulige
for i in range(10):
print('-------------',i)
for j in range(10):
print(j)
------------- 0
0
1
2
3
4
5
6
7
8
9
------------- 1
0
1
2
3
4
5
6
7
8
9
------------- 2
0
1
2
3
4
5
6
7
8
9
------------- 3
0
1
2
3
4
5
6
7
8
9
------------- 4
0
1
2
3
4
5
6
7
8
9
------------- 5
0
1
2
3
4
5
6
7
8
9
------------- 6
0
1
2
3
4
5
6
7
8
9
------------- 7
0
1
2
3
4
5
6
7
8
9
------------- 8
0
1
2
3
4
5
6
7
8
9
------------- 9
0
1
2
3
4
5
6
7
8
9
Process finished with exit code 0
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author: nulige
for i in range(10):
print('-------------',i)
for j in range(10):
print(j)
if j>5:
break
------------- 0
0
1
2
3
4
5
6
------------- 1
0
1
2
3
4
5
6
------------- 2
0
1
2
3
4
5
6
------------- 3
0
1
2
3
4
5
6
------------- 4
0
1
2
3
4
5
6
------------- 5
0
1
2
3
4
5
6
------------- 6
0
1
2
3
4
5
6
------------- 7
0
1
2
3
4
5
6
------------- 8
0
1
2
3
4
5
6
------------- 9
0
1
2
3
4
5
6
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#Author: nulige
for n in range(4):
print(n)
for j in range(3):
if j <2:
#如果j小于2就跳出当次循环,继续一下次循环
continue
print(n,j)
0 2
1 2
2 2
3 2
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#Author: nulige
for n in range(4):
print(n)
break
for j in range(3):
if j <2:
#如果j小于2就跳出当次循环,继续一下次循环
continue
print(n,j)
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author: nulige
count = 0
while count < 3:
login = '''
Hello welcome to login Cnlogs!
'''
login2 = '''
Try again
'''
if count == 0:
print(login)
else:
print(login2)
user = input("please input your name:")
password = input("please input your password:")
accept = str(user + password)
for line in open("C:\\Users\\Administrator\\Desktop\\file.txt"):
line = line.strip("\n")
if accept == line:
print("Welcome to login Cnlogs",user)
exit()
break
else:
continue
print("Your password or username is wrong")
count +=1
if count == 3:
print("fuck off")
file文件路径
file文件路径:C:\\Users\\Administrator\\Desktop\\file.txt"
file文件内容
nulige123456
alex123456
#说明(把输入的用户名和密码,拼接为一个字符串。)
#username:nulige
#password:123456
Hello welcome to login Cnlogs!
please input your name:nulige
please input your password:123456
Welcome to login Cnlogs nulige
Hello welcome to login Cnlogs!
please input your name:huzhihua
please input your password:11111
Your password or username is wrong
Try again
please input your name:skfjdskfjdsk
please input your password:321321
Your password or username is wrong
Try again
please input your name:fdskfjsk
please input your password:3333
Your password or username is wrong
fuck off
lstrip 去掉左边的空格
rstrip 去掉右边的空格
>>>a=" gho stwwl "
>>>a.lstrip() 'gho stwwl '
>>>a.rstrip() ' gho stwwl'
>>>a.strip() 'gho stwwl'
s.strip(rm) 删除s字符串中开头、结尾处,位于 rm删除序列的字符
s.lstrip(rm) 删除s字符串中开头处,位于 rm删除序列的字符
s.rstrip(rm) 删除s字符串中结尾处,位于 rm删除序列的字符
1. 当rm为空时,默认删除空白符(包括'\n', '\r', '\t', ' ')
>>> a.strip()
'123'
>>> a='\t\tabc'
'abc'
>>> a = 'sdff\r\n'
>>> a.strip()
'sdff'
>>> a.strip('21')
'3abc' 结果是一样的
>>> a.strip('12')
'3abc'menu = {
'北京':{
'海淀':{
'五道口':{
'soho':{},
'网易':{},
'google':{}
},
'中关村':{
'爱奇艺':{},
'汽车之家':{},
'youku':{},
},
'上地':{
'百度':{},
},
},
'昌平':{
'沙河':{
'老男孩':{},
'北航':{},
},
'天通苑':{},
'回龙观':{},
},
'朝阳':{},
'东城':{},
},
'上海':{
'闵行':{
"人民广场":{
'炸鸡店':{}
}
},
'闸北':{
'火车战':{
'携程':{}
}
},
'浦东':{},
},
'山东':{},
}
exit_flag = False
current_layer = menu
layers = [menu]
while not exit_flag:
for k in current_layer:
print(k)
choice = input(">>:").strip()
if choice == "b":
current_layer = layers[-1]
#print("change to laster", current_layer)
layers.pop()
elif choice not in current_layer:continue
else:
layers.append(current_layer)
current_layer = current_layer[choice]