老师帮我看看有什么问题

来源:2-13 作业题

墨浠

2019-12-21 22:57:41

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="utf-8">
   <title>Document</title>
</head>
<body>
   <form action="#" method="post">
       <input type="text" name="num" placeholder="请输入要打印的行数">
       <br/>
       <input type="submit" name="button1" value="金字塔">
       <input type="submit" name="button2" value="空心菱形">
   </form>
</body>
</html>

<?php
if($_POST) {
   //判断用户点了金字塔按钮
   if (isset($_POST['button1'])) {
       $num = $_POST['num'];
       for ($a = 1; $a <= $num; $a++) {
           echo '<br/>';
           for ($b = 1; $b <= $num - $a; $b++) {//设置每行的空格数量
               echo '<span style="color: #FFFFFF;">*</span>';//因浏览器兼容问题,对&nbsp;的输出有差异,所以用白色的*号代替
           }
           for ($c = 1; $c <= 2 * $a - 1; $c++) {//设置每行的*号数量
               echo '*';
           }
       }
   }
   //判断用户点了菱形按钮
   if (isset($_POST['button2'])) {
       $num = $_POST['num'];
       for($d=1;$d<=$num;$d++){//循环层数
           echo '<br/>';
           for($e=1;$e>=$num-$d;$e++){//空格数量
               echo '<span style="color: #FFFFFF;">*</span>';
           }
           for($f=1;$f<=2*$d-1;$f++){
               if($f==1 || $f==(2*$d-1)){
                   echo '*';
               }else{
                   echo '<span style="color: #ffffff;">*</span>';
               }
           }
       }
       echo '<br/>';
       for ($g = 5; $g >= 1; $g--) {
           echo '<br/>';
           for ($h = 0; $h < $num - $g; $h++) {
               echo '<span style="color: #FFFFFF;">*</span>';
           }
           for ($i = (2 * $g - 1); $i >= 1 ; $i--) {
               if($i == 1 || $i == (2*$g-1)){
                   echo '*';
               }else{
                   echo '<span style="color: #ffffff;">*</span>';
               }
           }
       }
   }
}
?>

写回答

1回答

好帮手慕小尤

2019-12-22

同学你好,1. 当用户没有输入的信息时,点击点击菱形,出现‘遇到非数值’的错误。如图所示:

http://img.mukewang.com/climg/5dfecde909282fd207360400.jpg

建议同学判断用户是否有输入信息,修改后代码如下:


http://img.mukewang.com/climg/5dfecf1f0920a90211170743.jpg

2. 未生成菱形。如图所示:

http://img.mukewang.com/climg/5dfecf7409886b5202440167.jpg
调整上下菱形的第一个循环。修改后代码如如下:

http://img.mukewang.com/climg/5dfed1140916914810440824.jpg

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Document</title>
</head>
<body>
    <form action="#" method="post">
        <input type="text" name="num" placeholder="请输入要打印的行数">
        <br/>
        <input type="submit" name="button1" value="金字塔">
        <input type="submit" name="button2" value="空心菱形">
    </form>
</body>
</html>

<?php
if($_POST) {
    //判断用户点了金字塔按钮
    if (isset($_POST['button1'])) {
        $num = $_POST['num'];
        if(is_numeric($num) &&  $num>0){
            for ($a = 1; $a <= $num; $a++) {
                echo '<br/>';
                for ($b = 1; $b <= $num - $a; $b++) {//设置每行的空格数量
                    echo '<span style="color: #FFFFFF;">*</span>';//因浏览器兼容问题,对&nbsp;的输出有差异,所以用白色的*号代替
                }
                for ($c = 1; $c <= 2 * $a - 1; $c++) {//设置每行的*号数量
                    echo '*';
                }
            }
        }else {
            echo "请输入行数";
        }
    }
    //判断用户点了菱形按钮
    if (isset($_POST['button2'])) {
        $num = $_POST['num'];
        if(is_numeric($num) &&  $num>0){
            // $d小于等于$num则进行循环
            for($d=1;$d<=$num;$d++){//循环层数
                echo '<br/>';
                for($e=1;$e<=$num-$d;$e++){//空格数量
                    echo '<span style="color: #FFFFFF;">*</span>';
                }
                for($f=1;$f<=2*$d-1;$f++){
                    if($f==1 || $f==(2*$d-1)){
                        echo '*';
                    }else{
                        echo '<span style="color: #ffffff;">*</span>';
                    }
                }
            }
            // $g=$num-1,当$g大于等于1时,则进行循环
            for ($g = $num-1; $g >= 1; $g--) {
                echo '<br/>';
                for ($h = 0; $h < $num - $g; $h++) {
                    echo '<span style="color: #FFFFFF;">*</span>';
                }
                for ($i = (2 * $g - 1); $i >= 1 ; $i--)  {
                    if($i == 1 || $i == (2*$g-1)){
                        echo '*';
                    }else{
                        echo '<span style="color: #ffffff;">*</span>';
                    }
                }
            }
        }else {
            echo "请输入行数";
        }
    }
}
?>

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

0

0 学习 · 4928 问题

查看课程