文章目录

  • 前言
  • 一、编写Python程序,实现判断变量x是奇数还是偶数
  • 二、改写第一题,变量x需要从pyhton 控制台输入,然后判断x是奇数还是偶数,并且需要将这一过程放到循环中,这样可以不断输入要判断的值,直到输入end退出循环,输入过程如图:
  • 三、编写一个Java程序(这里使用Python进行),使用循环打印一个菱形,菱形要求(*)打印,菱形的行数需要从控制台输入,行数必须是奇数
  • (1)第一次尝试
  • (2)第二次尝试
  • (3)第三次尝试
  • 总结



前言

结合前三篇文章,自己做的几个练习题,主要涉及循环与if条件,以及如何打印菱形,本文重点使用了三种方式打印菱形


一、编写Python程序,实现判断变量x是奇数还是偶数

x=int(input('请输入一个数:'))#因为input输入的默认是字符串,因此这里使用了int转化为整数
if x%2==0:#取余,余数等于0,为偶数,余数等于1,为奇数
    print('x是偶数')
else:
    print('x是奇数')

二、改写第一题,变量x需要从pyhton 控制台输入,然后判断x是奇数还是偶数,并且需要将这一过程放到循环中,这样可以不断输入要判断的值,直到输入end退出循环,输入过程如图:

Python循环嵌套菱形星号 python循环输出菱形_Python循环嵌套菱形星号

while True:
    x=input('请输入一个数:')
    if x=='end':
        break;
    elif int(x)%2==0:
            print('x','是偶数')
    else:
        print('x','是奇数')
输出结果:
请输入一个数:5
5 是奇数
请输入一个数:6
6 是偶数
请输入一个数:7
7 是奇数
请输入一个数:end

三、编写一个Java程序(这里使用Python进行),使用循环打印一个菱形,菱形要求(*)打印,菱形的行数需要从控制台输入,行数必须是奇数

Python循环嵌套菱形星号 python循环输出菱形_python_02

这个题方法比较多,对于一个新学的我来说着实费了一番功夫,最终尝试了三种方式进行打印。

(1)第一次尝试

这是我第一次进行计算,思路就是不就是两列数嘛,就是找行号与每行星星的关系、行和和空格数的关系
上半部分是比较好找的,星星就是1、3、5、7、9……
主要是下半部分:由于一开始我的想法比较简单,就是找行数和星星数的关系
于是,以11为例,
7,9
8,7
9,5
10,3
11,1
就是找这两个关系,首先我看到,两列的和是递减的,符合循环的思路,于是这个题就这样硬算出来了

#方法以:就硬算
x=int(input('请输入一个奇数:'))
s=x//2+1
y=0
for i in range(1,x+1):
    if i <=s:
        print(' '*(s-i),'*'*(2*i-1))
    else:
        y=y+1
        print(' '*(i-s),'*'*(x+s-y-i))
输出结果:
请输入一个奇数:11
      *
     ***
    *****
   *******
  *********
 ***********
  *********
   *******
    *****
     ***
      *
请输入一个奇数:5
   *
  ***
 *****
  ***
   *

(2)第二次尝试

但是毫无疑问,这个代码写出来我自己都觉得恶心,太丑了,而且这个逻辑太复杂了,于是我进行了进一步的优化。

x=int(input('请输入一个奇数:'))
meddle=x//2+1
for i in range(1,meddle+1):
    print(' '*(meddle-i),'*'*(2*i-1))
j=meddle
while j>=1:
    print(' '*(meddle-j),'*'*(2*j-1))
    j-=1

优化之后的上半部分没有变化,主要在下半部分,采用while循环,因为以11为例,第7行,需要一个右移1空格,8行两个,9行3个,正好是meddle-j(如果令J=meddle,每次循环递减,空格数正好的是meddle-J)

输出结果:
请输入一个奇数:11
      *
     ***
    *****
   *******
  *********
 ***********
 ***********
  *********
   *******
    *****
     ***
      *
请输入一个奇数:5
   *
  ***
 *****
 *****
  ***
   *

(3)第三次尝试

第三种方式就比较简单了,这个题给我的困扰就是空格数的计算和星星的计算,如何居中的问题,但是第三种就比较简单了,直接采用字符串的方法让他居中。

x=int(input('请输入一个奇数:'))
meddle=x//2+1
for i in range(1,meddle+1):
    print(('*'*(2*i-1)).center(x))
j=meddle
while j>=1:
    print(('*'*(2*j-1)).center(x))
    j-=1
采用字符串的center方法,直接进行居中,我们就不用考虑空格的问题了
输出结果:
请输入一个奇数:7
   *   
  ***  
 ***** 
*******
*******
 ***** 
  ***  
   *

总结

主要针对if条件语句和循环语句进行实战练习,主要是利用Python如何打印菱形的若干中方法。