python基础语法

交互式编程

交互式编程不需要创建脚本文件,是通过 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值