老师帮我看看有什么问题
来源: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>';//因浏览器兼容问题,对 的输出有差异,所以用白色的*号代替
}
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. 当用户没有输入的信息时,点击点击菱形,出现‘遇到非数值’的错误。如图所示:

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

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

调整上下菱形的第一个循环。修改后代码如如下:

<!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>';//因浏览器兼容问题,对 的输出有差异,所以用白色的*号代替
}
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 "请输入行数";
}
}
}
?>如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
相似问题
回答 1
回答 2