自学python--01基础

Python语言

设计哲学:

  • 优雅
  • 简单
  • 明确

注:所以python代码对书写格式有严格的要求。
例如:每一行只能完成一个操作,否则会报错。而且python对空格和缩进有严格的要求,不能随意加或减空格。
python特点:

  • 完全面向对象的(所以定义变量的时候不用表明变量的类型)
  • 有强大的标准库
  • 大量的第三方模块

执行python程序的三种方式:

  • 解释器python
  • 交互式ipython(适用于小的代码,退出无法保存)
  • 集成开发环境PyCharm

注:pycharm2.x版本不支持中文,pycharm3.x支持中文
注:python是解释性语言(翻译一行,执行一行),速度慢,但跨平台性好。c/c++是编译性语言(统一编译,一次性执行),速度快,跨平台性差。

基本使用

  • 定义变量,输入,输出以及一些基本运算符应用
# 一些基本的运算符应用
ch = input("请输入一个字符串")
print(9/2)  # 除法  (数值型和数值型直接运算)
print(9//2)  # 除法取整
print(9 % 2)  # 取余
print(2 ** 2)  # 2的2次方
print(2**64)
print(2*False)  # false默认位0
print(ch)
print(ch*3)  # 字符串输出3遍(字符串与数值型运算:是将字符串重复输出的次数)
ch = ch + "ok"  # 字符串的连接
print(ch)

注:python中定义变量,不用表明其数据类型,直接进行赋值

  • 单行,多行的注释
n = input("请输入一个整数")  # input默认输入的是字符型
# 强制类型转换int(),float()等
"""
因此我们再进行输入的时候,需要对输入的变量进行强制类型转换
"""

注:

  1. 单行注释用#,后面位注释内容(#与注释内容之间有一个空格)
  2. 在代码后面进行注释时,要先空两个空格,之后的与单行注释格式相同
  3. 代码块的注释用三个引号即可
  • 强制类型转换
num = 19
print(type(num))
money = float(input("请输入一个浮点数:"))
number = int(input("请输入一个整数:"))
print("输出强制转换之后的类型: %s" % type(money))
print("输出强制转换之后的类型: %s" % type(number))

注:

  1. input默认输入的是字符型,所以要进行强制类型转换
  2. 用int(),float()等函数进行强制转换成相对应的类型
  3. 可以用type(value)进行查看变量的类型
  • 格式化输出
name = "张三"
num = 12
score = 78.50
scale = 50
print("我叫%s ,我的学号是:%04d,我考了%.02f分" % (name, num, score))
print("我超过了%.02f%%" % scale)

注:

  1. %s是输出字符串
  2. %d输出有符号的十进制,%04d表示输出整数显示4位,不足的用0补足
  3. %f输出浮点数,%.02f表示只显示小数点后两位
  4. %%输出%
  • 常见错误
# 常见报错
"""
NameError  # 函数名错误
SyntaxError:invalid Syntax  # 语法失效(不符合语法错误)
IndentationError:unexpected indent  # 缩进错误(不期望出现空格)
"""

程序三大流程

顺序 --从上向下,顺序执行

分支 --根据条件判断,决定要执行的分支

  • if else语句
um = 10
if num <= 9:
    print("该数比9小%d" % (9-num))
    print("该数小于等于9")
else:
    print("该数比9大%d" % (num-9))
    print("该数大于9")
print("该数为:%d" % num)

注:

  1. python中的if,else后面都有一个冒号,相当于c里面的()。
  2. if下面的语句自动缩进4个空格,都为if条件成立下要执行的,else同理。
  3. 要想在if,else运行完之后执行其他语句,则该语句前不能有任何空格,即顶格进行书写
  • elif使用
score = int(input("请输入成绩:"))
if score >= 90:
    print("等级: A ")
elif score >= 80:  # 相当于c语言的switch
    print("等级: B")
elif score >= 70:
    print("等级: C")
elif score >= 10:
    print("等级: D")
else:
    print("不及格")

注:elif是应用于:同时判断多个条件,所有条件是平级。个人觉得,就是c语言里面的switch(),符合那个条件就执行,那个条件下的语句

  • if嵌套
"""
火车站安检:
    检查是否有票,有票进行开始安检,无票不允许上车
    携带的刀是否超过20公分,未超过允许上车,超过不允许上车
"""
has_ticket = False
knife_length = 30
if has_ticket:
    print("车票检查通过,准备开始安检")
    if knife_length > 20:
        print("您的刀太长了,不允许上车")
    else:
        print("安检通过,允许上车")
else:
    print("您没有车票,不允许上车")

注:if嵌套和c语言的使用相同,适用于层级间的关系,只有前面的条件为真,才可以进行判断它的后面的语句。

循环 --让特定的代码重复执行

  • while循环
row = 1  # 字符串乘法
while row <= 5 :
    print("*" * row)
    row += 1

注:相当于单层循环
【运行结果】
在这里插入图片描述

  • while嵌套循环
row = 1
while row <= 5:
    col = 1
    while col <= row:
        print("*", end="")  # print()默认输出换行,加end后在输出内容后不直接换行print("*",end="---")
        col += 1
    print()  # 在一行小星星输出后进行换行
    row += 1

注:相当于多重循环,用多重循环来输出上述格式的小星星

  • break,continue
    注:break,continue与c语言相同,break跳出循环;continue跳出本次循环

函数

  • 函数的定义
  • 定义格式
def 函数名():
	函数封装的代码
	······

注:

  • def的英文缩写是define的缩写
  • 函数名称能代表函数封装代码的功能,方便后继的调用
  • 函数名称的命名应符合标识符的命名规则
    • 可以有字母,下划线和数字组成
    • 不能以数字开头
    • 不能与关键字重名
      例如:将上面的九九乘法表代码进行修改,用函数输出
def output():  # 定义函数名
    row = 1
    while row <= 9:
        col = 1
        while col <= row:
            num = col * row
            print("%d*%d=%d" % (col, row, num), end="\t")  # \t(转义字符加t)
            # 在控制台输出一个制表符,协助在垂直方向保持对齐
            col += 1
        print("")
        row += 1

import mll_while嵌套输出九九乘法表  # 导入函数所在的模块(相当于java中的包)
# 通过调用函数输出,因为不再一个模块中,所有前面有模块的调用
mll_while嵌套输出九九乘法表.output()

注:

  • 这是两个代码,前一个代码的名字为mll_while嵌套输出九九乘法表,所以后面直接通过output()进行调用。
  • def定义函数时,后面有一个“” 不能丢,后面的代码要有缩进才在函数里。
  • 不能将函数的调用放在函数的定义前面。否则回报NameError错误!

拓展Pyc文件(对上述例子的拓展)

我们在浏览文件夹的时候会发现多了一个** _pycache _ ** 的文件,该目录下有一个** mll_while嵌套输出九九乘法表.cpython-37.pyc **,cpython-37表示python解释器的版本。
在这里插入图片描述
1.
原因:python在解释源程序分为两步:1>首先处理源代码,编译生成一个二进制字节码
2>再对字节码进行处理,才会生成CPU能够识别的机器码


  • 有了模块的字节码文件后,下一次运行的程序时,如果在上次保存的字节码之后没有修改过代码,python将会加载.pyc文件并跳过编译步骤。这样运行的速度就加快了。但是如果你修改了源代码,字节码将自动重新创建。

  • 函数的参数

  • 定义:在函数名后的小括号中填写参数,多个参数间用 分隔

  • 作用:增加函数的通用性,针对相同的数据处理逻辑,能够适应更多的数据。

  • 在函数内部,把参数当变量使用,进行数据处理

  • 在函数调用时,按照参数传递

  • 形参和实参:

  • 形参:定义函数时,小括号中的参数,是用来接受参数用的,在函数内部作为变量使用

  • 实参:调用函数时,小括号中的参数,是用来把数据传递到函数内部用的。

例如:

def compare(num1, num2):
    if num1 > num2:
        print("%d大于%d" % (num1, num2))
    else:
        print("%d小于等于%d" % (num1, num2))
        
        
compare(10, 2)

注:compare调用时要与前面函数定义要有两行空行,不然下面会有小的波浪线

  • 函数的返回值

  • 返回值是函数执行完,最后给调用者一个值

  • 在函数中用return关键字进行返回结果,而且return后面的代码都不会被执行

  • 函数调用一方可以使用变量来接受函数返回的结果
    例如:

def compare(num1, num2):
    if num1 > num2:
        return num1
    else:
        return num2


result = compare(10, 6)
print("大数为:%d" % result)
  • 函数的嵌套使用
  • 定义:一个函数中又调用了另一个函数,就叫函数的嵌套
    例如:
def print_line(char, times):
    print(char * times)


def print_lines(char, times):

    """
    打印多行分割线
    :param char: 分割线使用的分隔符
    :param times: 分割线重复的次数
    :return: 无返回值
    """
    row = 0
    while row < 5:
        print_line(char, times)
        row += 1


print_lines("*", 3)
  • 在模块中使用函数
  • 概念:
  • 模块就好比是工具包,要想使用其中的工具,就要用import导入,导入后用模块名.变量或者模块名.函数的方式来使用定义过的变量和函数。
  • 每一个以.py结尾的源代码文件中都是一个模块
  • 在模块中定义的全局变量,函数都是能够提供给外界直接使用的工具
    注:模块让写过的代码重复使用,模块名也是一个标识符
    如果在给的python文件起名的时,以数字开头时无法在pyCharm中通过导入这个模块
    ( 在导入11文件的时候就会报错)
    在这里插入图片描述
    进行导入在这里插入图片描述

综合应用

  • 石头,剪刀,布游戏
import random
player = int(input("请出拳  石头(1) 剪刀(2) 布(3):"))
computer = random.randint(1, 3)  # 生成随机数n: 1 < = n < = 3
print("电脑出拳:%d, 我出拳:%d" % (computer, player))
if(player == 1 and computer == 2) or (player == 2 and computer == 3) or (player == 3 and computer == 1):
    print("我赢了")
elif player == computer:
    print("平局")
else:
    print("电脑赢了")

【运行结果】
在这里插入图片描述

  • 输出九九乘法表
row = 1
while row <= 9:
    col = 1
    while col <= row:
        num = col * row
        print("%d*%d=%d" % (col, row, num), end="\t")  # \t(转义字符加t)
        # 在控制台输出一个制表符,协助在垂直方向保持对齐
        col += 1
    print("")
    row += 1

【运行结果】
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值