文章目录
- 1.Python 简述
- 2.变量
- 3.输入输出
- 4.数据运算
- 5. 条件语句 if..else、elif 循环语句 for、while
- 6.文件读写
- 7.三元运算
1.Python 简述
??Python 是一种动态解释性的强类型定义语言。
所谓动态:
??动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。
??静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等。
所谓解释性:
??编译是将源程序翻译成可执行的目标代码,翻译与执行是分开的;而解释是对源程序的翻译与执行一次性完成,不生成可存储的目标代码。在程序运行的前一刻,还只有源程序而没有可执行程序;而程序每执行到源程序的某一条指令,则会有一个称之为解释程序的外壳程序将源代码转换成二进制代码以供执行,总言之,就是不断地解释、执行、解释、执行……所以,解释型程序是离不开解释程序的。
??解释具有良好的动态特性和可移植性,比如在解释执行时可以动态改变变量的类型、对程序进行修改以及在程序中插入良好的调试诊断信息等,而将解释器移植到不同的系统上,则程序不用改动就可以在移植了解释器的系统上运行。同时解释器也有很大的缺点,比如执行效率低,占用空间大,因为不仅要给用户程序分配空间,解释器本身也占用了宝贵的系统资源。
所谓强定义类型:
??强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量a,那么程序根本不可能将a当作字符串类型处理。强类型定义语言是类型安全的语言。
2.变量
??python变量名的命名规则与其他语言相同。且由于是强定义类型语言,声明变量时不用声明变量类型:
name = "yle"
age = 22
PIE = 3.1415 #常量名需要大写
#三个单引号或双引号为整块注释,python 中单双引号一致 ,当变量赋予注释时,该变量就是字符串了
msg = ''' name1 = "y" name2 = "le" 我的 name is yle '''
print(msg)
3.输入输出
输入:
输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法,即:
import getpass# 将用户输入的内容赋值给 name 变量
pwd = getpass.getpass("请输入密码:")# 打印输入的内容
print(pwd)
不过 getpass 在 PyCharn 中不好使
name = input("name:")
'''python是一种强类型语言,输入的变量默认为是string类型的,若不进行强制转换则永远不会改变'''
age = int(input("age:"))
print(type(age)) #int
age2 = input("age2:")
print(type(age2)) #string
job = input("job:")
salary = input("salary:")
输出:
除了用 + 号进行字符串拼接之外,python 中有三种使用占位符的方法:
1)
info = ''' ------ info of %s ------ name = %s age = %d job = %s salary = %s '''%(name,name,age,job,salary)
print(info)
2)
info2 = ''' ------ info2 of {_name} ------ name = {_name} age = {_age} job = {_job} salary = {_salary} '''.format(_name = name,_age = age,_job = job,_salary = salary)
print(info2)
3)
info3 = ''' ------ info3 of {0} ------ name = {0} age = {1} job = {2} salary = {3} '''.format(name,age,job,salary)
print(info3)
4.数据运算
算数运算:
比较运算:
赋值运算:
逻辑运算:
成员运算:
身份运算:
位运算:
运算符优先级:
5. 条件语句 if…else、elif 循环语句 for、while
场景1:用户登录验证
_username = 'yle'
_password = '123'username = input("username:")
#password = getpass.getpass("password:")
password = input("password:")
if _username == username and _password == password:print("Welcome user {name} login...".format(name = username))
else:print("Invalid username or password!")
场景2:猜年龄游戏
age_of_oldboy = 56
chance = 3
while chance > 0:age = int(input("age:"))if age == age_of_oldboy:print("yes,you got it!")breakelif age < age_of_oldboy:print("too smaller")else:print("too bigger")chance -= 1print("you have {times} times".format(times = chance))
else: #else 甚至能用于 whileprint("you have tried too many times...")
for i in range(10): # i 从 0 开始print("loop",i)
print("----------------------")
for i in range(0,10,2): #跳两个打印一个print("loop",i)
print("----------------------")
for i in range(0,10,3): #跳三个打印一个print("loop",i)
6.文件读写
open 函数
??必须先用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写。
语法:
file object = open(file_name [, access_mode][, buffering])
各个参数的细节如下:
??file_name:file_name变量是一个包含了你要访问的文件名称的字符串值。
??access_mode:access_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读( r )。
??buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。
不同模式打开文件的完全列表:
t 文本模式 (默认)。x 写模式,新建一个文件,如果该文件已存在则会报错。b 二进制模式。+ 打开一个文件进行更新(可读可写)。U 通用换行模式(不推荐)。r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件
如图片等。r+ 打开一个文件用于读写。文件指针将会放在文件的开头。rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果
该文件不存在,创建新文件。wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会
被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该
文件不存在,创建新文件。wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被
删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写
入到已有内容之后。如果该文件不存在,创建新文件进行写入。ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的
内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如
果该文件不存在,创建新文件用于读写。ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存
在,创建新文件用于读写。
file对象的属性:
close()方法
??File 对象的 close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。
??当一个文件对象的引用被重新指定给另一个文件时,Python 会关闭之前的文件。用 close()方法关闭文件是一个很好的习惯。
语法:
fileObject.close()
write()方法
??write()方法可将任何字符串写入一个打开的文件。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。
??write()方法不会在字符串的结尾添加换行符(’\n’):
语法:
fileObject.write(string)
在这里,被传递的参数是要写入到已打开文件的内容。
例子:
# 打开一个文件
fo = open("foo.txt", "w")
fo.write( "www.runoob.com!\nVery good site!\n")# 关闭打开的文件
fo.close()
??上述方法会创建foo.txt文件,并将收到的内容写入该文件,并最终关闭文件。如果你打开这个文件,将看到以下内容:
$ cat foo.txt
www.runoob.com!
Very good site!
read()方法
??read()方法从一个打开的文件中读取一个字符串。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。
语法:
fileObject.read([count])
??在这里,被传递的参数是要从已打开文件中读取的字节计数。该方法从文件的开头开始读入,如果没有传入count,它会尝试尽可能多地读取更多的内容,很可能是直到文件的末尾。
例子:
# 打开一个文件
fo = open("foo.txt", "r+")
str = fo.read(10)
print "读取的字符串是 : ", str
# 关闭打开的文件
fo.close()
文件定位
??tell()方法告诉你文件内的当前位置, 换句话说,下一次的读写会发生在文件开头这么多字节之后。
??seek(offset [,from])方法改变当前文件的位置。Offset变量表示要移动的字节数。from变量指定开始移动字节的参考位置。如果from被设为0,这意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将作为参考位置。
例子:
# 打开一个文件
fo = open("foo.txt", "r+")
str = fo.read(10)
print "读取的字符串是 : ", str# 查找当前位置
position = fo.tell()
print "当前文件位置 : ", position# 把指针再次重新定位到文件开头
position = fo.seek(0, 0)
str = fo.read(10)
print "重新读取字符串 : ", str
# 关闭打开的文件
fo.close()
重命名和删除文件
??Python的os模块提供了帮你执行文件处理操作的方法,比如重命名和删除文件。要使用这个模块,你必须先导入它,然后才可以调用相关的各种功能。
rename()方法:rename()方法需要两个参数,当前的文件名和新文件名。
语法:
os.rename(current_file_name, new_file_name)
remove()方法
你可以用remove()方法删除文件,需要提供要删除的文件名作为参数。
语法:
os.remove(file_name)
7.三元运算
result = 值1 if 条件 else 值2
例:
a,b,c = 1,3,5
d = a if a > b else c
print(d) # d 为 5