通过PHP与Python代码对比的语法差异详解


Posted in Python onJuly 10, 2019

一、背景

人工智能这几年一直都比较火,笔者一直想去学习一番;因为一直是从事PHP开发工作,对于Python接触并不算多,总是在关键时候面临着基础不牢,地动山摇的尴尬,比如在遇到稍微深入些的问题时候就容易卡壳,于是准备从Python入门从头学起;

笔者觉得应该有不少人同样熟悉PHP或者Python语言,对另外一个门语言并不是太熟悉,有想法学习另外一门语言,希望通过这篇文章能够对大家有一点帮助。

二、知识点

最近在完成一个小作业,题目要求:通过Python代码实现,让用户输入用户名密码,认证成功后显示欢迎信息,输错三次后退出程序。

在这篇文章当中,会通过这个小作业来总结和分析PHP与Python的语法区别,主要涉及到以下几个知识点:

  • 代码整体风格
  • 变量命名规范
  • 常量命名规范
  • 注释方式
  • 数据类型
  • 输入输出
  • if语句使用
  • while循环

三、Python语法

在Python中需要严格遵守空格缩进,否则会报错;在每行代码后面不需要使用;,结构体的条件不需要使用(),执行体里面则不需要{};

3.1 代码示例

# -*- coding: utf-8 -*-
n = 0

while n < 3:
  #累计次数,用于循环条件
  n = n + 1
  #定义账号和密码
  uname = 'tangqingsong'
  pwd = '123123'
  #接收参数
  username = input('请输入用户名:')
  password = input('请输入密码:')

  #判断用户输入的账号和密码是否正确,正确将提示成功,并且退出循环体
  if uname == username and pwd == password:
    print ('恭喜你,登陆成功~')
    break
  #三次机会用完的时候,提示错误次数,并告知即将退出
  elif n == 3:
    print('已错误', n, '次,即将退出...')
  #如果在三次以内,提示还剩下几次机会
  else:
    print('抱歉,账号或密码不正确,你还有', 3 - n, '次机会')

3.2 基本语法

下面从基本语法、数据类型、IF控制、while循环几个方面来聊聊Python代码中的一些规范

3.2.1 基础语法

变量: 在Python中变量以数字 字母 下划线组成,不能以数字开头,不能是python中的关键字,比如 while、if、elif、else、break、continue等,同样推荐使用驼峰命名和下划线命名两种规范命名格式

常量: 在Python中常量和变量在定义的方式上没有太大的区别,知识Python中约定俗成的使用全大写定义而已

注释: 在Python中,注释可以通过#来注释某行代码,也可以通过'''注释某段代码,比如'''注释内容'''

3.2.2 数据类型

在Python中,可以通过type(变量名)来获取变量的数据类型,经常使用到的数据类型有:布尔、整型、浮点型、字符串等;在布尔型中 真/True/1 假/False/0,非0的数字都是True;

在字符串中可以通过单引号和双引号两种方式定义,比如

a = '字符串'
b = "字符串"

也可以使用

a = '''可以换行
  这里有换行
 这里也有换行
的字符串
'''
#或者三个双引号

b = """可以换行
  这里有换行
 这里也有换行
的字符串"""

来定义一大段字符串;字符串可以使用字符串 + 字符串的方式进行拼接,也可以使用 字符串 * 数字,将字符串重复凭借,比如 'abc' * 2,name得出的字符串便是abcabc

3.2.3 数据类型

在整型和浮点数据类型中加减乘除没有什么太特别,同样是使用+、-、*、/这四个符号,使用%可以的出余数;Python中有几个特殊的运算符,比如可以使用//进行整除,得出的结果不会有小数,如下代码所示:

a = 10 // 3 

# 得到的结果是 3

也可以使用**可以得到乘方,如下代码所示;

b = 2 ** 2 

# 得到的结果是 8

3.2.4 输入输出

输入输出:在Python中可以使用print关键字对变量进行打印输出,可以通过 input接收用户在终端中传递的参数,例如

inp = input('用户输入的时候看到的提示 :')

通过input方式接收的所有内容都是字符串类型,如果需要用来做运算需要对接收的变量进行类型转换;比如

a = int(变量名)

可以将变量转换成整型,也可以通过

f = float(变量名)

转换成浮点型;

3.3 IF控制

在Python中if语句使用的时候条件不需要使用()包括,执行体在也不需要使用{}包括,但执行体必须严格遵守缩进如下代码所示

# if a >3 and b==2:
  缩进 满足条件1之后要做的事情
 elif a>3 and b==3:
  缩进 不满足条件1但满足条件2之后要做的事情
 else:
  缩进 上面的条件都不满足要做的事情

3.4 while循环

在Python中使用while方法与PHP类似,如下为伪代码所示

while a == b:
  循环执行的代码

可以使用关键词break退出循环,也可以使用continue跳过循环过程中的某一步,如下代码所示

i = 1
while i < 10:  
  i += 1
  # 非双数时跳过输出
  if i%2 > 0:   
    continue
  # 输出双数2、4、6、8
  print i     
  # 当条件为8时候退出循环
  if i == 8:
    break

四、PHP语法

在PHP中并不需要严格遵守空格缩进,但是和Python相对应的是在每行代码后面通常需要使用;结尾,结构体的条件也需要使用(),执行体里面同样需要{};

4.1 代码示例

<?php

$n = 0;

while ($n < 3) {
  #累计次数,用于循环条件
  $n = $n + 1;
  #定义账号和密码
  $uname = 'tangqingsong';
  $pwd = '123123';
  #接收参数
  fwrite(STDOUT, '请输入用户名:');
  $username = trim(fgets(STDIN));
  fwrite(STDOUT, '请输入密码:');
  $password = trim(fgets(STDIN));

  #判断用户输入的账号和密码是否正确,正确将提示成功,并且退出循环体
  if ($uname == $username and $pwd == $password) {
    print_r('恭喜你,登陆成功~');
    break;
    #三次机会用完的时候,提示错误次数,并告知即将退出
  } elseif ($n == 3) {
    print_r("已错误{$n}次,即将退出...");
  } else {
    #如果在三次以内,提示还剩下几次机会
    $j = 3 - $n;
    print_r("抱歉,账号或密码不正确,你还有{$j}次机会");
  }
}

4.2 基本语法

下面从基本语法、数据类型、IF控制、while循环几个方面来聊聊PHP代码中的一些规范

4.2.1 基础语法

变量: 在PHP中变量以数字 字母 下划线组成,必须以$符号开头,且第一个字符不能以数字开头,在PHP中因为变量都是以$开头,所以基本上没有关键字的说法,但是写代码的时候尽量不要覆盖系统变量即可,同样推荐使用驼峰命名和下划线命名两种规范命名格式

常量: 在PHP中常量同样约定俗成的使用全大写定义而已,在定义的方式有专门的定义格式,比如定义DAXIA的值为tangqingsong时候,代码如下所示

const DAXIA = 'tangqingsong';

注释: 在PHP中,注释可以通过#来注释某行代码,也可以使用//定义行代码,也可以通过/****/注释某段代码,如下代码所示

#这是行注释

//这是行注释,一般习惯是使用此种方式

/**
 * 块注释,一般在自定义函数和类方法的时候使用
 */

4.2.2 数据类型

在PHP中,可以通过var_dump(变量名)同时打印变量类型和值,经常使用到的数据类型有:布尔、整型、浮点型、字符串等;同样在布尔型中 真/True/1 假/False/0,非0的数字都是True;
在字符串中可以通过单引号和双引号两种方式定义,单引号中不能放变量,但是双引号是可以的,如下代码所示

$n = 123;

a = '字符串';
b = "字符串{$n}";

当大家定义块文本内容的时候,也可以使用定界符方式,如下代码所示

$a = <<<EF

这里是大文本内容,可以写任意文本,EF是自定义的,大家也可以把EF写成DAXIA,但是必须前后对应,后面的必须定格,后面一个“EF”不能用空格之类的字符;

EF;

字符串可以使用符号 . 进行拼接,如下代码所示:

$name = 'daxia' . 'tangqingsong';

4.2.3 数据类型

在PHP中整型和浮点数据类型中加减乘除没有什么太特别,同样是使用+、-、*、/这四个符号,使用%可以的出余数;

4.2.4 输入输出

输入输出:在PHP中可以使用print_r关键字对变量进行打印输出,在接收标准输入方面稍微麻烦,需要先通过fwrite接收用户在终端中传递的参数,然后再通过fgets函数将变量值取出来,还需要通过trim将后面的空格过滤,例如

fwrite(STDOUT, '请输入用户名:');  
  $username = trim(fgets(STDIN));

通过上面代码方式接收的所有内容都是字符串类型,但是PHP是弱类型语言,并不强大变量的数据类型,所以大部分情况无需进行类型转换,如果需要用到类型转换方法和Python大体类型,如下代码所示

a = intval(变量名)

可以将变量转换成整型,也可以通过

f = floatval(变量名)

转换成浮点型;

4.3 IF控制

if条件:在PHP中if语句的使用方法如下代码所示

<?php
if (a >3 and b==2){
  满足条件1之后要做的事情
} elseif (a>3 and b==3){
  不满足条件1但满足条件2之后要做的事情
} else {
  上面的条件都不满足要做的事情
}

4.4 while循环

while循环:在PHP中while的条件必须使用()包括,执行体在也必须使用{}包括,执行体不要求严格的缩进,但是为了美观,一般都会缩进,如下为伪代码所示

<?php
while ($a == $b){
  //循环执行的代码
}

可以使用关键词break退出循环,也可以使用continue跳过循环过程中的某一步,如下代码所示

<?php

$i = 1;
while ($i < 10) {
  $i += 1;
  //非双数时跳过输出
  if ($i % 2 > 0) {
    continue;
  }
  
  //输出双数2、4、6、8
  print_r($i);
  
  //当条件为8时候退出循环
  if ($i == 8) {
    break;
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python基础教程之元组操作使用详解
Mar 25 Python
Python判断变量是否为Json格式的字符串示例
May 03 Python
Python编程实战之Oracle数据库操作示例
Jun 21 Python
全面分析Python的优点和缺点
Feb 07 Python
TensorFlow入门使用 tf.train.Saver()保存模型
Apr 24 Python
python读取和保存图片5种方法对比
Sep 12 Python
Python的UTC时间转换讲解
Feb 26 Python
django创建超级用户过程解析
Sep 18 Python
python3 dict ndarray 存成json,并保留原数据精度的实例
Dec 06 Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
Dec 11 Python
python基于tkinter制作下班倒计时工具
Apr 28 Python
Python破解极验滑动验证码详细步骤
May 21 Python
python 梯度法求解函数极值的实例
Jul 10 #Python
对Python中小整数对象池和大整数对象池的使用详解
Jul 09 #Python
Python 旋转打印各种矩形的方法
Jul 09 #Python
python opencv对图像进行旋转且不裁剪图片的实现方法
Jul 09 #Python
python下的opencv画矩形和文字注释的实现方法
Jul 09 #Python
Python3 执行系统命令并获取实时回显功能
Jul 09 #Python
利用python开发app实战的方法
Jul 09 #Python
You might like
mysql 全文搜索 技巧
2007/04/27 PHP
php桥接模式应用案例分析
2019/10/23 PHP
javascript 数组学习资料收集
2010/04/11 Javascript
js根据给定的日期计算当月有多少天实现思路及代码
2013/02/25 Javascript
如何设置一定时间内只能发送一次请求
2014/02/28 Javascript
Javascript基础教程之函数对象和属性
2015/01/18 Javascript
ECMAScript 5中的属性描述符详解
2015/03/02 Javascript
js原型链与继承解析(初体验)
2016/05/09 Javascript
js正则表达式验证密码强度【推荐】
2017/03/03 Javascript
微信小程序实现给循环列表添加点击样式实例
2017/04/26 Javascript
详解微信小程序中的页面代码中的模板的封装
2017/10/12 Javascript
AngularJS 控制器 controller的详解
2017/10/17 Javascript
AngularJS实现的获取焦点及失去焦点时的表单验证功能示例
2017/10/25 Javascript
React中常见的动画实现的几种方式
2018/01/10 Javascript
Vue全局分页组件的实现代码
2018/08/10 Javascript
vue使用Google地图的实现示例代码
2018/12/19 Javascript
Vue formData实现图片上传
2019/08/20 Javascript
vue2.x 对象劫持的原理实现
2020/04/19 Javascript
如何在postman测试用例中实现断言过程解析
2020/07/09 Javascript
[01:22:28]DOTA2-DPC中国联赛 正赛 SAG vs RNG BO3 第一场 1月18日
2021/03/11 DOTA
Python读取txt文件数据的方法(用于接口自动化参数化数据)
2018/06/27 Python
Sanic框架基于类的视图用法示例
2018/07/18 Python
PyCharm设置每行最大长度限制的方法
2019/01/16 Python
Python解决pip install时出现的Could not fetch URL问题
2019/08/01 Python
Python 将json序列化后的字符串转换成字典(推荐)
2020/01/06 Python
Jupyter加载文件的实现方法
2020/04/14 Python
您的健身减肥和健康饮食专家:vitafy
2017/06/06 全球购物
美国户外烹饪产品购物网站:Outdoor Cooking
2020/01/10 全球购物
int和Integer有什么区别
2013/05/25 面试题
广告学专业毕业生自荐信
2013/09/24 职场文书
电信专业毕业生推荐信
2013/11/18 职场文书
出生证明公证书
2014/04/09 职场文书
医学专业自荐信
2014/06/14 职场文书
副总经理党的群众路线教育实践活动个人对照检查材料思想汇报
2014/10/06 职场文书
党员检讨书范文
2014/12/27 职场文书
MySQL 8.0 驱动与阿里druid版本兼容问题解决
2021/07/01 MySQL