基础嵌套循环

等腰三角形(又名奇数(腹式呼吸法,吸气一次,呼气奇数次……))

lines = int(input("输入要打印的行数:"))
for i in range(lines):
    for j in range(0, lines - i):
        print(end=" ")
    for k in range(2 * i + 1):
        print("*", end="")
    print()

运行后: 

输入要打印的行数:5
     *
    ***
   *****
  *******
 *********

 奇数数字横竖斜总和相等,输入偶数直接报错

size = int(input("输入要打印的SIZE(奇数):"))
array = [[0] * size]
# 创建一个长度size * size的二维列表
for i in range(size - 1):
    array += [[0] * size]
row, col = 0, size // 2
for i in range(1, size * size + 1):
    array[row][col] = i
    if i % size == 0:
        row += 1
    elif row == 0:
        row = size - 1
        col += 1
    elif col == size - 1:
        row -= 1
        col = 0
    else:
        row -= 1
        col += 1
for i in range(size):
    for j in range(size):
        print('%02d' % array[i][j], end=" ")
    print()

 运行后:

输入要打印的SIZE(奇数):5
17 24 01 08 15 
23 05 07 14 16 
04 06 13 20 22 
10 12 19 21 03 
11 18 25 02 09 

输入要打印的SIZE(奇数):4
Traceback (most recent call last):
  File "E:/学习/python代码系列/。/《疯狂Python讲义》(习题答案)/04/4.3.py", line 23, in <module>
    array[row][col] = i
IndexError: list assignment index out of range #列表赋值索引超出范围

 奇数实心菱形,输入偶数则停止。

 

lines = int(input("输入要打印的行数(奇数):"))
if lines % 2 == 0:
    print('请输入奇数')
    import sys
    sys.exit(0)
half_lines = lines // 2 + 1
# 打印上半
for i in range(half_lines):
    print(" " * (half_lines - i), end="")
    print("*" * (2 * i + 1))
# 打印下半
for i in range(half_lines - 1):
    print(" " * (i + 2), end="")
    print("*" * (lines - 2 - 2 * i))

运行后: 

输入要打印的行数(奇数):7
    *
   ***
  *****
 *******
  *****
   ***
    *

输入要打印的行数(奇数):6
请输入奇数
 

 空心矩形,奇数则输出,偶数则结束

lines = int(input("输入要打印的行数(奇数):"))
if lines % 2 == 0:
    print('请输入奇数')
    import sys
    sys.exit(0)
half_lines = lines // 2 + 1
# 打印上半
for i in range(half_lines):
    print(" " * (half_lines - i), end="")
    if i == 0:
        print("*")
    else:
        print("*", end="")
        print(" " * (2 * i - 1), end="")
        print("*")
# 打印下半
for i in range(half_lines - 1):
    print(" " * (i + 2), end="")
    if i == half_lines - 2:
        print("*")
    else:
        print("*", end="")
        print(" " * (lines - 4 - 2 * i), end="")
        print("*")

 运行后:

输入要打印的行数(奇数):7
    *
   * *
  *   *
 *     *
  *   *
   * *
    *

输入要打印的行数(奇数):6
请输入奇数

记录字母数字其他字母

string = input("请输入一行内容: ")
char_num, digit_num, other_num = 0, 0, 0
for c in string:
    if c.isdigit(): digit_num += 1
    elif c.isalpha(): char_num += 1
    else: other_num += 1
print('字母个数', char_num)
print('数字个数', digit_num)
print('其他字母个数', other_num)

 运行后:

 请输入一行内容: 12345fgDFG-
字母个数 5
数字个数 5
其他字母个数 1

 相似圆

radius = int(input("请输入半径: "))
for i in range(2 * radius + 1):
    half = round((radius ** 2 - (radius - i) ** 2) ** 0.5)
    print("  " * (radius - half), end="")
    print("*", end="")
    print("  " * half * 2, end="")
    print("*")

 运行后:

请输入半径: 7
              **
      *                *
    *                    *
  *                        *
  *                        *
*                            *
*                            *
*                            *
*                            *
*                            *
  *                        *
  *                        *
    *                    *
      *                *
              **

 某些字母组成的菱形

lines = int(input("请输入一半的行数: "))
# 打印上半
for i in range(lines):
    print("-" * (lines * 2 - 2 - 2 * i), end="")
    my_list = []
    for j in range(i + 1):
        my_list.append(chr(96 + lines - j))
    for j in range(i):
        my_list.append(chr(ord(my_list[-1]) + 1))
    print('-'.join(my_list), end="")
    print("-" * (lines * 2 - 2 - 2 * i))
# 打印下半
for i in range(lines - 1):
    print("-" * (2 * (i + 1)), end="")
    # 换一种方式初始化list列表
    my_list = [chr(96 + lines - j) for j in range(lines - 1 - i)]
    for j in range(lines - 2 - i):
        my_list.append(chr(ord(my_list[-1]) + 1))
    print('-'.join(my_list), end="")
    print("-" * (2 * (i + 1)))

 运行后:

 请输入一半的行数: 6
----------f----------
--------f-e-f--------
------f-e-d-e-f------
----f-e-d-c-d-e-f----
--f-e-d-c-b-c-d-e-f--
f-e-d-c-b-a-b-c-d-e-f
--f-e-d-c-b-c-d-e-f--
----f-e-d-c-d-e-f----
------f-e-d-e-f------
--------f-e-f--------
----------f----------

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值