83、Python与PHP编程入门指南

Python与PHP编程入门指南

1. Python编程要点

1.1 调用父类方法

在Python中,当重写了一个方法却还想调用父类的方法时,可以使用当前类所继承的类对象。例如,若修改Model T汽车颜色需额外收费,可先打印收费信息,再更改颜色。示例代码如下:

class Modelt(Car):
    def set_color(self, color):
        print "You owe $50 more"
        Car.set_color(self, color)

mycar = Modelt()
mycar.set_color("green")
print mycar.color

此代码会先打印收费信息,然后更改汽车颜色。

1.2 标准库与Python包索引

Python默认安装包含许多模块,可用于与操作系统交互、打开和操作文件、解析命令行选项、进行数据哈希和加密等。Python标准库中的模块数量众多,甚至有专门的书籍介绍它们。

对于非官方的Python脚本和插件,推荐从Python包索引(pyPI)开始查找,网址为https://pypi.python.org/pypi ,这里有超过10000个公共脚本和代码示例,涵盖从数学到游戏等各个领域。

1.3 Python相关资源网站

  • www.python.org :Python官方网站,信息丰富且定期更新,可查看最新的Python新闻。
  • www.jython.org :Python有基于Java的优秀解释器,可在其他平台上运行。
  • www.ironpython.com :若偏好Microsoft .NET,可访问此网站。
  • www.montypython.com :Python语言的名称源自Monty Python’s Flying Circus,许多Python代码示例会使用相关隐晦引用,访问此官方网站有助于提升Python知识。
  • www.zope.org :Zope内容管理系统(CMS)的主页,Zope是最流行的CMS之一,完全用Python编写。

2. PHP编程入门

2.1 PHP简介

PHP最初代表Personal Home Page,它是一组Perl脚本,用于简化创建留言簿、留言板等常见主页交互脚本。如今,PHP已进行了重大更新和修订,其成功的部分原因在于与数据库的强大集成,早期应用几乎都依赖数据库后端。

在Ubuntu仓库中可获取许多PHP包,基本安装包名为php,安装它会引入其他依赖包。

PHP在外观上是Java和Perl的结合,融合了两者的优点。它具有强大的面向对象系统、抛出程序异常的能力,编写风格借鉴自C;同时借鉴了Perl“应该能正常工作”的理念,更注重易用性而非严格性,因此在PHP中有“有多种方法可实现”的情况。这意味着可能以不太理想或不考虑安全的方式完成任务,虽有人批评PHP,但对于简单任务或编写仔细时,它是一种易于理解和使用的语言,尤其适合快速创建网站。

2.2 进入和退出PHP模式

与PHP的前身不同,PHP代码嵌入在HTML中。在PHP之前,许多网站大部分内容是标准HTML页面,需要后端处理时会链接到Perl CGI页面。而使用PHP,所有页面都能处理和包含HTML,这是PHP受欢迎的重要因素。

每个PHP文件由PHP处理,PHP会查找要执行的代码。在找到以下四种情况之一前,PHP会将所有文本视为HTML:
- <?php
- <?
- <%
- <script language="php">

其中, <?php 是进入PHP模式的首选方法,因为它保证能正常工作。

在PHP模式下,可使用以下方式退出:
- ?> (对应 <?php <?
- %> (对应 <%
- </script> (对应 <script language="php">

示例代码展示了进入和退出PHP模式:

In HTML mode
<?php
  echo "In PHP mode";
?>
In HTML mode
In <?php echo "PHP"; ?> mode

2.3 PHP变量

PHP中的每个变量都以美元符号 $ 开头。与许多其他语言不同,PHP没有针对整数、浮点数、数组或布尔值的不同变量类型,它们都以 $ 开头且可互换。因此,PHP是一种弱类型语言,无需声明变量包含的特定数据类型,可随意使用。

以下是测试PHP变量类型的代码,将其保存为 ubuntu1.php 文件:

<?php
  $i = 10;
  $j = "10";
  $k = "Hello, world";
  echo $i + $j;
  echo $i + $k;
?>

运行此脚本,在控制台中浏览到保存文件的位置,然后输入命令:

matthew@seymour:~$ php ubuntu1.php

若PHP安装正确,将看到输出 2010 。其中, 20 10 + 10 $i $j )的结果, 10 10 加字符串 Hello, world 的结果。 $i 被设置为数字 10 ,而 $j 实际上是文本值 "10" ,将 10 加到 "10" 时,PHP会动态将 $j 转换为整数再进行加法运算。将 $i $k 相加时,PHP会尝试将字符串 Hello, world 转换为数字,非数字字符串转换为数字时结果为 0 ,所以第二个 echo 语句相当于 $i + 0

PHP变量类型如下表所示:
| 类型 | 存储内容 |
| ---- | ---- |
| integer | 整数,如1、9或324809873 |
| float | 浮点数,如1.1、9.09或3.141592654 |
| string | 字符,如”a”、”sfdgh”或”Ubuntu Unleashed” |
| boolean | true或false |
| array | 任意类型的多个变量 |
| object | 用于定义和操作属于唯一实体的一组变量 |
| resource | 存储外部系统的自定义数据类型 |

2.4 PHP数组

数组是PHP中受欢迎的部分,其语法简洁易读且功能强大。理解数组需了解以下四个术语:
- 元素 :数组由多个元素组成。
- :每个元素有一个键,用于定义其在数组中的位置,一个数组中给定键只能有一个元素。
- :每个元素还有一个值,是与键关联的数据。
- 游标 :每个数组有一个游标,指向当前键。

前三个术语常用,游标使用较少。在PHP中,键可以是整数、字符串、对象或其他数组,但不能使用浮点数作为键。

有两种向数组添加值的方法:
- []运算符 :用于向现有数组添加项。
- array()伪函数 :用于创建新数组。

以下代码展示了数组的操作:

<?php
  $myarr = array(1, 2, 3, 4);

  $myarr[4] = "Hello";
  $myarr[] = "World!";
  $myarr["elephant"] = "Wombat";
  $myarr["foo"] = array(5, 6, 7, 8);

  echo $myarr[2];
  echo $myarr["elephant"];
  echo $myarr["foo"][1];

  $myarr = array();
?>

初始数组创建了四个元素,PHP自动为其分配从0开始的键。通过 [] 运算符可添加元素,还可使用字符串键和数组值。最后,使用 array() 函数清空数组。

另一种使用 array() 函数的方式可指定键和值:

$myarr = array("key1" => "value1", "key2" => "value2",
7 => "foo", 15 => "bar");

选择哪种方法取决于是否需要特定的键。

2.5 PHP常量

常量常用于需要传递特定值的函数中。例如, extract() 函数可将数组中的所有值提取到独立的变量中,可通过第二个参数选择更改提取变量的名称。为避免记忆大量数字,可使用常量,如 EXTR_OVERWRITE 表示 0 EXTR_SKIP 表示 1 EXTR_PREFIX_IF_EXISTS 表示 5 等。

可使用 define() 函数创建自己的常量,常量不以美元符号开头,示例代码如下:

<?php
  define("NUM_SQUIRRELS", 10);
  define("PLAYER_NAME", "Jim");
  define("NUM_SQUIRRELS_2", NUM_SQUIRRELS);
  echo NUM_SQUIRRELS_2;
?>

此脚本展示了可将常量设置为数字、字符串或其他常量的值。

2.6 PHP引用

可使用等号 = 将一个变量的值复制到另一个变量,也可使用引用,即一个变量不拥有自己的值,而是指向另一个变量,这样可共享值并使变量相互更新。

使用 & 符号进行引用复制,示例代码如下:

<?php
  $a = 10;
  $b = &$a;
  echo $a . "\n";
  echo $b . "\n";

  $a = 20;
  echo $a . "\n";
  echo $b . "\n";

  $b = 30;
  echo $a . "\n";
  echo $b . "\n";
?>

运行此脚本,更新 $a 会同时更新 $b ,更新 $b 也会更新 $a

2.7 PHP注释

在PHP中,有三种注释风格:
- // :指示PHP忽略该行剩余内容。
- /* */ :指示PHP忽略直到遇到 */ 的内容。
- # :作用与 // 相同,常用于shell脚本语言。

示例代码展示了 // /* */ 的区别:

<?php
  echo "This is printed!";
  // echo "This is not printed";
  echo "This is printed!";
  /* echo "This is not printed";
  echo "This is not printed either"; */
?>

通常推荐使用 // ,因为使用 /* */ 容易因忘记注释结束位置而引入编码错误。需要注意的是,PHP脚本中的注释几乎不影响脚本执行速度,使用代码缓存可完全消除微小的速度差异。

2.8 PHP转义序列

有些字符无法直接输入,可使用转义序列。例如,使用 \n 表示换行符, \r 表示回车符。在Windows平台上,需使用 \r\n 来换行。转义序列必须在双引号中使用,在单引号中无效。

常见的转义序列有 \\ (忽略反斜杠)、 \" (忽略双引号)和 \' (忽略单引号)。当字符串包含引号时,这些转义序列很重要。例如,字符串 "Are you really Conan O'Brien?" 包含单引号,直接使用单引号包围会导致错误,可使用双引号包围或使用 \' 转义单引号:

echo 'Are you really Conan O\'Brien?';

虽然转义序列适用于小文本字符串,但HTML中引号较多,过度使用转义会使代码混乱,此时使用单引号包围文本更清晰。

2.9 PHP变量替换

PHP允许使用单引号、双引号或heredoc符号定义字符串,heredoc较少使用,单引号和双引号的使用基本相同,唯一区别在于变量替换。

以下代码展示了变量替换:

<?php
  $age = 25
  echo "You are ";
  echo $age;
?>

这是一种笨拙的在字符串中打印变量的方式。可将变量放在字符串中,PHP会进行变量替换,将变量替换为其值:

<?php
  $age = 25
  echo "You are $age";
?>

单引号字符串不会进行变量替换,示例如下:

<?php
  $age = 25
  echo "You are $age";
  echo 'You are $age';
?>

第一个 echo 打印 You are 25 ,第二个打印 You are $age

2.10 PHP运算符

PHP中有许多运算符用于处理算术、比较、赋值等操作。运算符是执行操作的符号,操作数是参与运算的变量或值。例如,在 $a = $b + c; 中, = + 是运算符, $a $b $c 是操作数。除了常见的 + (加)、 - (减)、 * (乘)和 / (除)运算符,还有其他运算符,如下表所示:
| 运算符 | 作用 |
| ---- | ---- |
| = | 将右操作数赋值给左操作数 |
| == | 若左操作数等于右操作数,返回true |
| != | 若左操作数不等于右操作数,返回true |
| === | 若左操作数与右操作数完全相同,返回true,与 == 不同 |
| !== | 若左操作数与右操作数不完全相同,返回true,与 != 不同 |
| < | 若左操作数小于右操作数,返回true |
| > | 若左操作数大于右操作数,返回true |
| <= | 若左操作数小于或等于右操作数,返回true |
| && | 若左操作数和右操作数都为true,返回true |
| || | 若左操作数或右操作数为true,返回true |
| ++ | 操作数加1 |
| -- | 操作数减1 |
| += | 左操作数加上右操作数 |
| -= | 左操作数减去右操作数 |
| . | 连接左操作数和右操作数 |
| % | 左操作数除以右操作数并返回余数 |
| | | 执行按位或操作 |

至少有10种其他运算符未列出,因为不太常用。按位或运算符 | 常用于组合值,示例代码如下:

<?php
  $i = 100;
  $i++; // $i is now 101
  $i--; // $i is now 100 again

综上所述,通过本文的介绍,我们了解了Python和PHP编程的一些基础知识,包括Python调用父类方法、标准库和相关资源网站,以及PHP的基本语法、变量、数组、常量、引用、注释、转义序列、变量替换和运算符等内容。这些知识为进一步学习和使用这两种编程语言奠定了基础。

2.11 PHP条件语句

在PHP中,条件语句用于根据不同的条件执行不同的代码块。常见的条件语句有 if else if else 。以下是一个简单的示例:

<?php
$age = 20;
if ($age < 18) {
    echo "You are a minor.";
} else if ($age >= 18 && $age < 60) {
    echo "You are an adult.";
} else {
    echo "You are a senior.";
}
?>

在这个示例中,根据 $age 的值,程序会输出不同的信息。如果 $age 小于18,输出 You are a minor. ;如果 $age 在18到60之间,输出 You are an adult. ;如果 $age 大于等于60,输出 You are a senior.

2.12 PHP循环语句

循环语句用于重复执行一段代码。PHP中常见的循环语句有 for while foreach

2.12.1 for循环

for 循环通常用于已知循环次数的情况。以下是一个 for 循环的示例,用于输出1到10的数字:

<?php
for ($i = 1; $i <= 10; $i++) {
    echo $i . " ";
}
?>

在这个示例中, $i 从1开始,每次循环增加1,直到 $i 大于10时停止循环。

2.12.2 while循环

while 循环在条件为真时会一直执行代码块。以下是一个 while 循环的示例,用于输出1到10的数字:

<?php
$i = 1;
while ($i <= 10) {
    echo $i . " ";
    $i++;
}
?>

在这个示例中,只要 $i 小于等于10,就会一直执行循环体中的代码。

2.12.3 foreach循环

foreach 循环主要用于遍历数组。以下是一个 foreach 循环的示例,用于遍历一个数组并输出其元素:

<?php
$numbers = array(1, 2, 3, 4, 5);
foreach ($numbers as $number) {
    echo $number . " ";
}
?>

在这个示例中, foreach 循环会依次取出数组 $numbers 中的每个元素,并将其赋值给 $number ,然后执行循环体中的代码。

2.13 PHP函数

函数是一段可重复使用的代码块。在PHP中,可以自定义函数,也可以使用内置函数。以下是一个自定义函数的示例,用于计算两个数的和:

<?php
function add($a, $b) {
    return $a + $b;
}

$result = add(5, 3);
echo $result;
?>

在这个示例中,定义了一个名为 add 的函数,它接受两个参数 $a $b ,并返回它们的和。然后调用这个函数,将结果赋值给 $result 并输出。

2.14 PHP面向对象编程

PHP支持面向对象编程,包括类、对象、继承、多态等概念。以下是一个简单的类和对象的示例:

<?php
class Car {
    public $color;

    public function setColor($color) {
        $this->color = $color;
    }

    public function getColor() {
        return $this->color;
    }
}

$myCar = new Car();
$myCar->setColor("red");
echo $myCar->getColor();
?>

在这个示例中,定义了一个名为 Car 的类,它有一个属性 $color 和两个方法 setColor getColor 。然后创建了一个 Car 类的对象 $myCar ,并调用 setColor 方法设置颜色,最后调用 getColor 方法输出颜色。

2.15 PHP处理HTML表单

PHP常用于处理HTML表单提交的数据。以下是一个简单的HTML表单和PHP处理代码的示例:

HTML表单
<!DOCTYPE html>
<html>
<body>

<form action="process.php" method="post">
  Name: <input type="text" name="name"><br>
  Email: <input type="email" name="email"><br>
  <input type="submit" value="Submit">
</form>

</body>
</html>
PHP处理代码(process.php)
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $name = $_POST["name"];
    $email = $_POST["email"];
    echo "Name: " . $name . "<br>";
    echo "Email: " . $email;
}
?>

在这个示例中,HTML表单将数据提交到 process.php 文件,PHP代码通过 $_POST 数组获取表单数据并输出。

2.16 PHP与数据库交互

PHP可以与多种数据库进行交互,如MySQL。以下是一个简单的PHP与MySQL数据库交互的示例:

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);

// 检查连接
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// 查询数据
$sql = "SELECT id, name, email FROM users";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // 输出数据
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "<br>";
    }
} else {
    echo "0 results";
}
$conn->close();
?>

在这个示例中,首先建立与MySQL数据库的连接,然后执行一个查询语句,将查询结果输出。最后关闭数据库连接。

总结

通过以上内容,我们全面了解了Python和PHP编程的基础知识。Python方面,掌握了调用父类方法、标准库和相关资源网站的使用。PHP方面,深入学习了其基本语法,包括变量、数组、常量、引用、注释、转义序列、变量替换、运算符、条件语句、循环语句、函数、面向对象编程、处理HTML表单以及与数据库交互等内容。这些知识为我们进一步深入学习和应用这两种编程语言提供了坚实的基础。在实际开发中,可以根据具体需求选择合适的语言和技术来实现功能。

以下是一个简单的mermaid流程图,展示了PHP处理HTML表单的流程:

graph TD;
    A[用户填写HTML表单] --> B[提交表单];
    B --> C[PHP接收表单数据];
    C --> D[处理表单数据];
    D --> E[输出处理结果];

同时,为了方便回顾,这里再次列出PHP变量类型的表格:
| 类型 | 存储内容 |
| ---- | ---- |
| integer | 整数,如1、9或324809873 |
| float | 浮点数,如1.1、9.09或3.141592654 |
| string | 字符,如”a”、”sfdgh”或”Ubuntu Unleashed” |
| boolean | true或false |
| array | 任意类型的多个变量 |
| object | 用于定义和操作属于唯一实体的一组变量 |
| resource | 存储外部系统的自定义数据类型 |

先展示下效果 https://pan.quark.cn/s/a4b39357ea24 遗传算法 - 简书 遗传算法的理论是根据达尔文进化论而设计出来的算法: 人类是朝着好的方向(最优解)进化,进化过程中,会自动选择优良基因,淘汰劣等基因。 遗传算法(英语:genetic algorithm (GA) )是计算数学中用于解决最佳化的搜索算法,是进化算法的一种。 进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传、突变、自然选择、杂交等。 搜索算法的共同特征为: 首先组成一组候选解 依据某些适应性条件测算这些候选解的适应度 根据适应度保留某些候选解,放弃其他候选解 对保留的候选解进行某些操作,生成新的候选解 遗传算法流程 遗传算法的一般步骤 my_fitness函数 评估每条染色体所对应个体的适应度 升序排列适应度评估值,选出 前 parent_number 个 个体作为 待选 parent 种群(适应度函数的值越小越好) 从 待选 parent 种群 中随机选择 2 个个体作为父方和母方。 抽取父母双方的染色体,进行交叉,产生 2 个子代。 (交叉概率) 对子代(parent + 生成的 child)的染色体进行变异。 (变异概率) 重复3,4,5步骤,直到新种群(parentnumber + childnumber)的产生。 循环以上步骤直至找到满意的解。 名词解释 交叉概率:两个个体进行交配的概率。 例如,交配概率为0.8,则80%的“夫妻”会生育后代。 变异概率:所有的基因中发生变异的占总体的比例。 GA函数 适应度函数 适应度函数由解决的问题决定。 举一个平方和的例子。 简单的平方和问题 求函数的最小值,其中每个变量的取值区间都是 [-1, ...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值