通过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中map()函数的使用方法示例
Sep 29 Python
Python爬虫番外篇之Cookie和Session详解
Dec 27 Python
Python标准库笔记struct模块的使用
Feb 22 Python
python基于物品协同过滤算法实现代码
May 31 Python
python实现猜单词小游戏
May 22 Python
在Python中输入一个以空格为间隔的数组方法
Nov 13 Python
python实现趣味图片字符化
Apr 30 Python
读取nii或nii.gz文件中的信息即输出图像操作
Jul 01 Python
python中str内置函数用法总结
Dec 27 Python
Django中如何用xlwt生成表格的方法步骤
Jan 31 Python
python垃圾回收机制原理分析
Apr 13 Python
Sentry的安装、配置、使用教程(Sentry日志手机系统)
Jul 23 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的AcceptPathInfo指令使用介绍
2013/01/18 PHP
总结一些PHP中好用但又容易忽略的小知识
2017/06/02 PHP
php 调用百度sms来发送短信的实现示例
2018/11/02 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
2020/02/29 PHP
怎么用javascript进行拖拽
2006/07/20 Javascript
Mootools 1.2教程 事件处理
2009/09/15 Javascript
document.onreadystatechange事件的用法分析
2009/10/17 Javascript
javascript将相对路径转绝对路径示例
2014/03/14 Javascript
Angularjs+bootstrap+table多选(全选)支持单击行选中实现编辑、删除功能
2017/03/27 Javascript
vue.js内部自定义指令与全局自定义指令的实现详解(利用directive)
2017/07/11 Javascript
angular4 共享服务在多个组件中数据通信的示例
2018/03/30 Javascript
关于Mac下安装nodejs、npm和cnpm的教程
2018/04/11 NodeJs
JS/HTML5游戏常用算法之碰撞检测 像素检测算法实例详解
2018/12/12 Javascript
JS添加或删除HTML dom元素的方法实例分析
2019/03/05 Javascript
Vue 自定义指令实现一键 Copy功能
2019/09/16 Javascript
全面解析JavaScript Module模式
2020/07/24 Javascript
vue从后台渲染文章列表以及根据id跳转文章详情详解
2020/12/14 Vue.js
python实现根据月份和日期得到星座的方法
2015/03/27 Python
python中的break、continue、exit()、pass全面解析
2017/08/05 Python
python中partial()基础用法说明
2018/12/30 Python
Python3 串口接收与发送16进制数据包的实例
2019/06/12 Python
Django实现基于类的分页功能
2019/10/31 Python
关于TensorFlow新旧版本函数接口变化详解
2020/02/10 Python
Python可视化工具如何实现动态图表
2020/10/23 Python
西班牙创意礼品和小工具网上商店:Curiosite
2016/07/26 全球购物
美国旅游网站:Tours4Fun
2017/02/17 全球购物
美国滑雪和滑雪板商店:Buckman
2018/03/03 全球购物
网络教育毕业生自我鉴定
2013/10/10 职场文书
公司活动邀请函
2014/01/24 职场文书
cf收人广告词大全
2014/03/14 职场文书
求职意向书范文
2014/04/01 职场文书
我的中国梦演讲稿800字
2014/08/19 职场文书
2014年减负工作总结
2014/12/10 职场文书
2016年基层党组织创先争优承诺书
2016/03/25 职场文书
2019暑假阅读倡议书
2019/06/24 职场文书
数据库的高级查询六:表连接查询:外连接(左外连接,右外连接,UNION关键字,连接中ON与WHERE的不同)
2021/04/05 MySQL