文章目录
交互式编程
交互式编程不需要创建脚本文件,是通过 Python 解释器的交互模式进来编写代码。
print("Hello, Python!")
Hello, Python!
脚本式编程
指定解释器执行
%%writefile hello.py
#!/root/miniconda3/bin/python
print("Hello, Python!")
Overwriting hello.py
!ls -lh
!python hello.py
总用量 36K
-rw-r--r-- 1 root root 13K 11月 12 16:58 00python介绍.ipynb
-rw-r--r-- 1 root root 8.9K 11月 12 17:01 01Python环境搭建.ipynb
-rw-r--r-- 1 root root 3.4K 11月 12 17:12 02Python基础语法.ipynb
-rwxr-xr-x 1 root root 54 11月 12 17:10 hello.py
Hello, Python!
给予 hello.py 执行权限
!chmod 755 hello.py
!ls -lh
总用量 36K
-rw-r--r-- 1 root root 13K 11月 12 16:58 00python介绍.ipynb
-rw-r--r-- 1 root root 8.9K 11月 12 17:01 01Python环境搭建.ipynb
-rw-r--r-- 1 root root 3.4K 11月 12 17:13 02Python基础语法.ipynb
-rwxr-xr-x 1 root root 54 11月 12 17:10 hello.py
!./hello.py
Hello, Python!
python语法基础
缩进分层
行尾:表示一行代码缩进的开始
if True:
print("True")
else:
print("False")
True
if True:
print("True")
else:
print("False")
True
代码注释
- 单行注释,以“#”字符开始,不论是什么都不会执行
- 多行注释,用三个单引号’’’ 或是三个双引号"""将注释的内容包围起来
'''
该程序的功能是根据变量
x值输出+/-
'''
a=2
if a>=0:
print('+') #大于或等于0输出+
else:
print('-') #不大于0输出-
# print(a) #此为注释语句不会被执行
+
断行
print('+');print('-') #用“;”分隔的写在同一行的两条语句
if a>=0:print('+') #缩进的语句只有一条而写在同一行内
+
-
+
import sys; x = 'runoob'; sys.stdout.write(x + '\n')
runoob
python代码中一条语句过长可以使用“\”将该行以后内容写入下一行,而""后则不允许有任何内容
print('I am a teacher',\
'first_name',\
'last_name')
I am a teacher first_name last_name
以上代码,其实去掉“\”也是正确的,因为python语言也规定了圆括号包围的部分是可以写在不同行的。
print('I am a teacher',
'first_name',
'last_name')
I am a teacher first_name last_name
输入和输出
接收键盘输入input()
#调用input()函数,基本的形式如下input(prompt)
name1 = input()
name2 = input('please input your name:')
#当用户输入的程序需要输入数值,则必须进行数据转换
num = int(input('please input number:'))
print(name1,name2,num)
#name = raw_input("What is your name?") #only on python 2.x
6
please input your name:6
please input number:6
6 6 6
输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法,即:
import getpass
# 将用户输入的内容赋值给 name 变量
pwd = getpass.getpass("请输入密码:")
# 打印输入的内容
print(pwd)
请输入密码:········
34567
显示处理结果print()
print(value,..., sep=' ', end='\n')
此处只是部分参数,其中参数的意义如下:
- value 是用户输出的信息,后面的省略号表示可以有多个输出的信息
- sep是多个要输出信息之间的分隔符,其中默认值为一个空格
- end是一个print()函数中所有要输出信息之后添加的符号,默认值是换行符
#print()会依次打印每个字符串,遇到逗号“,”会输出一个空格,因此,输出的字符串是这样拼起来的
print('a','b','c')
print('a','b','c',sep=',')
print('a','b','c',end=';')
print('a','b','c')
print("*", end="---")
print("*")
a b c
a,b,c
a b c;a b c
*---*
用python计算
表达式计算器
#基本四则混合算术运算式
3*5/2 + 4*2
15.5
#用括号改变优先级,并能嵌套使用
27*(4-2)/(2+4*(3+1))
3.0
#求2的3次方
2**3
8
x = 3
2*x**2 - x + 4
19
直接使用长整数
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
199**99
385882038903511628883114181028424833328541605753481579343319754888593611212871418396027662995362221052765140208298627984367886375194677841711279845321977198472894036432428189341402243744389806176714248864852985412200332997979799
浮点数的比较
计算9个0.1,看到的结果是0.89999999999999…,为啥不是0.9
0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1
0.8999999999999999
0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1 == 0.9
False
0.9 - (0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1) < 10**-9
True
这就是计算机表示数的方法和我们使用的方法不同,我们使用的是十进制,而计算机使用的二进制,0.1是无法精确的转换为二进制数,所以就产生了误差。无论哪种编程语言都存在这个问题,只不过有的编译或运行时在内部进行了处理,你看不到其错误的结果
命令行参数
sys.argv 来获取命令行参数
- sys.argv 是命令行参数列表。
- len(sys.argv) 是命令行参数个数。
- sys.argv[0] 表示脚本名。
%%writefile arguments.py
#!/root/miniconda3/bin/python
# -*- coding: utf-8 -*-
import sys
print('参数个数为:', len(sys.argv), '个参数。')
print('参数列表:', sys.argv)
print('脚本名称:', sys.argv[0])
print('第一个参数:', sys.argv[1])
print('第二个参数:', sys.argv[2])
print('第三个参数:', sys.argv[3])
Overwriting arguments.py
%%bash
python arguments.py arg1 arg2 arg3
参数个数为: 4 个参数。
参数列表: ['arguments.py', 'arg1', 'arg2', 'arg3']
脚本名称: arguments.py
第一个参数: arg1
第二个参数: arg2
第三个参数: arg3
getopt模块
getopt模块是专门处理命令行参数的模块,用于获取命令行选项和参数,也就是sys.argv。命令行选项使得程序的参数更加灵活。支持短选项模式(-)和长选项模式(–)。
该模块提供了两个方法及一个异常处理来解析命令行参数。
getopt.getopt 方法用于解析命令行参数列表,语法格式如下:
getopt.getopt(args, options[, long_options])
-
args: 要解析的命令行参数列表。
-
options: 以列表的格式定义,options后的冒号(:)表示该选项必须有附加的参数,不带冒号表示该选项不附加参数。
-
long_options: 以字符串的格式定义,long_options 后的等号(=)表示如果设置该选项,必须有附加的参数,否则就不附加参数。
该方法返回值由两个元素组成: 第一个是 (option, value) 元组的列表。 第二个是参数列表,包含那些没有’-‘或’–'的参数。
Exception getopt.GetoptError
在没有找到参数列表,或选项的需要的参数为空时会触发该异常。
%%writefile getopt_arguments.py
#!/root/miniconda3/bin/python
# -*- coding: utf-8 -*-
import sys
import getopt
def main(args):
inputfile = ''
outputfile = ''
try:
opts, args = getopt.getopt(args,"hi:o:",["ifile=","ofile="])
except getopt.GetoptError:
print('test.py -i <inputfile> -o <outputfile>')
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print('test.py -i <inputfile> -o <outputfile>')
sys.exit()
elif opt in ("-i", "--ifile"):
inputfile = arg
elif opt in ("-o", "--ofile"):
outputfile = arg
print('输入的文件为:', inputfile)
print('输出的文件为:', outputfile)
if __name__ == "__main__":
main(sys.argv[1:])
Overwriting getopt_arguments.py
%%bash
python getopt_arguments.py -h
python getopt_arguments.py -i inputfile --ofile outputfile
test.py -i <inputfile> -o <outputfile>
输入的文件为: inputfile
输出的文件为: outputfile
argparse模块
%%writefile argparse_arguments.py
#!/root/miniconda3/bin/python
# -*- coding: utf-8 -*-
__author__ = 'sunchengquan'
__mail__ = '1641562360@qq.com'
import sys
import argparse
parser = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter,
epilog='author:\t{0}\nmail:\t{1}'.format(__author__, __mail__))
parser.add_argument("-i", "--input", required=True, help="input file")
parser.add_argument("-a", "--all", action='store_true', help="show all info")
parser.add_argument("-o", "--output", help="output file")
args = parser.parse_args()
inputfile = args.input
outputfile = args.output
if inputfile:
print(inputfile)
if outputfile:
print(outputfile)
if args.all:
print('all is true')
Overwriting argparse_arguments.py
%%bash
python argparse_arguments.py -h
usage: argparse_arguments.py [-h] -i INPUT [-a] [-o OUTPUT]
optional arguments:
-h, --help show this help message and exit
-i INPUT, --input INPUT
input file
-a, --all show all info
-o OUTPUT, --output OUTPUT
output file
author: sunchengquan
mail: 1641562360@qq.com
%%bash
python argparse_arguments.py -i inputfile
python argparse_arguments.py -i inputfile -o outputfile -a
inputfile
inputfile
outputfile
all is true