通过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 16 Python
Python常见工厂函数用法示例
Mar 21 Python
python正向最大匹配分词和逆向最大匹配分词的实例
Nov 14 Python
解决pyttsx3无法封装的问题
Dec 24 Python
python算法与数据结构之单链表的实现代码
Jun 27 Python
关于Python-faker的函数效果一览
Nov 28 Python
Python3 实现减少可调用对象的参数个数
Dec 20 Python
Python新手学习标准库模块命名
May 29 Python
keras K.function获取某层的输出操作
Jun 29 Python
Python制作简单的剪刀石头布游戏
Dec 10 Python
详解pandas apply 并行处理的几种方法
Feb 24 Python
Python实现视频中添加音频工具详解
Dec 06 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
浅谈apache和nginx的rewrite的区别
2013/02/22 PHP
smarty模板引擎使用内建函数foreach循环取出所有数组值的方法
2015/01/22 PHP
php如何实现只替换一次或N次
2015/10/29 PHP
php 多文件上传的实现实例
2016/10/23 PHP
laravel实现于语言包的完美切换方法
2019/09/29 PHP
js加解密 脚本解密
2008/02/22 Javascript
jQuery 页面 Mask实现代码
2010/01/09 Javascript
Javascript学习笔记5 类和对象
2010/01/11 Javascript
jquery isEmptyObject判断是否为空对象的函数
2011/02/14 Javascript
原生JS实现加入收藏夹的代码
2013/10/24 Javascript
关于删除时的提示处理(确定删除吗)
2013/11/03 Javascript
一个支付页面DEMO附截图
2014/07/22 Javascript
js正则表达式中exec用法实例
2015/07/23 Javascript
Jquery+ajax+JAVA(servlet)实现下拉菜单异步取值
2016/03/23 Javascript
JavaScript微信定位功能实现方法
2016/11/29 Javascript
jQuery插件zTree实现清空选中第一个节点所有子节点的方法
2017/03/08 Javascript
JavaScript函数柯里化原理与用法分析
2017/03/31 Javascript
Angular 2.x学习教程之结构指令详解
2017/05/25 Javascript
微信小程序全局变量功能与用法详解
2019/01/22 Javascript
如何通过setTimeout理解JS运行机制详解
2019/03/23 Javascript
node koa2 ssr项目搭建的方法步骤
2020/12/11 Javascript
[01:07:20]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第二场 2月2日
2021/03/11 DOTA
python进程类subprocess的一些操作方法例子
2014/11/22 Python
Python中尝试多线程编程的一个简明例子
2015/04/07 Python
详解 Python 与文件对象共事的实例
2017/09/11 Python
pandas 对series和dataframe进行排序的实例
2018/06/09 Python
Python3导入CSV文件的实例(跟Python2有些许的不同)
2018/06/22 Python
使用python实现画AR模型时序图
2019/11/20 Python
房地产销售大学生自我评价分享
2013/11/11 职场文书
自我评价格式
2014/01/06 职场文书
高中生班主任评语
2014/04/25 职场文书
爱护环境建议书
2015/09/14 职场文书
新课程改革心得体会
2016/01/22 职场文书
行政后勤人员工作计划应该怎么写?
2019/08/16 职场文书
如何在python中实现ECDSA你知道吗
2021/11/23 Python
js判断两个数组相等的5种方法
2022/05/06 Javascript