1、使用循环输出九九乘法表。输出样式结果如下:
1 x 1 = 1
1 x 2 = 2, 2 x 2 = 4
......
1 x 9 = 9, 2 x 9 = 18, 3 x 9 = 27, ... , 9 x 9 = 81
1 for i in range(1, 10):
2 for j in range(1, i+1):
3 if j == i:
4 print("%d x %d = %-2d" % (j, i, j * i), end="")
5 else:
6 print("%d x %d = %-2d" % (j, i, j * i), end=", ")
7 print()
2、使用循环输出等腰三角形。例如给定4,输出如下结果:
*
***
*****
*******
1 lines = int(input("输入要打印的行数:"))
2 for i in range(lines):
3 for _ in range(1, lines - i):
4 print(end=" ")
5 for _ in range(2 * i + 1):
6 print("*", end="")
7 print()
3、给定一个奇数,例如3,输出横、竖、斜的总和相等:
08 01 06
03 05 07
04 09 02
例如给出数字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
代码示例如下:
1 size = int(input("请输入一个奇数:"))
2 if size % 2 != 1:
3 exit("输入的不是奇数,程序结束!")
4 # 创建一个长度 size * size 的二维列表
5 array = [[0] * size]
6 for i in range(size - 1):
7 array += [[0] * size]
8 row, col = 0, size // 2 # 数字 1 填在第一行的中间
9 for i in range(1, size * size + 1):
10 array[row][col] = i
11 if i % size == 0: # 能整除时,行号加1,列号不变,往下填数字
12 row += 1
13 elif row == 0: # 如果行号(row)等于0,就跳转到最后一行,并且列号加 1
14 row = size - 1
15 col += 1
16 elif col == size - 1: # 如果行号不等于0,列号到达最右边,就移动上一行的最左边
17 row -= 1
18 col = 0
19 else: # 从左下角往右上角填数字
20 row -= 1
21 col += 1
22 maxnum = size * size
23 if maxnum < 100:
24 for i in range(size):
25 for j in range(size):
26 print('%02d' % array[i][j], end=" ")
27 print()
28 else:
29 maxnumstr = "%0" + str(len(str(maxnum))) + "d"
30 for i in range(size):
31 for j in range(size):
32 print(maxnumstr % array[i][j], end=" ")
33 print()
4、使用循环输出菱形,例如输入7,输出如下结果,如果输入偶数提示不能打印:
*
***
*****
*******
*****
***
*
根据规律,菱形可从中间分开,分为上半部分和下半部分,上半部分左边的空格依次减少,星号(*)是 2 * i + 1 的规律增加。下半部分左边的空格依次增加,星号是 line - 2 - 2 * j 的规律减少。用代码实现如下:
1 line = int(input("请输入菱形的行数,输入偶数不能打印:"))
2 if line % 2 == 0:
3 exit("输入的是偶数,不能打印!")
4 half_line = line // 2 + 1 # 从中间分开,分上半部分和下半部分
5 for i in range(half_line):
6 # 打印上半部分
7 print(" " * (half_line - i - 1), end="")
8 print("*" * (2 * i + 1))
9 for j in range(half_line - 1):
10 # 打印下半部分
11 print(" " * (j + 1), end="")
12 print("*" * (line - 2 - 2 * j))
5、使用循环输出空心菱形,提示只能输入奇数,例如输入7,输出如下结果:
*
* *
* *
* *
* *
* *
*
找规律:将菱形分为上半部分和下半部分。上半部分左边的空格从上到下依次减少(half_line - i - 1),下半部分左边空格依次增多(i + 1)。上半部分星号之间的空格依次增加(2*i-1),下半部分星号之间的空格依次减少(line-4-2*i)。代码如下:
1 line = int(input("请输入要打印的行数(奇数):"))
2 if line % 2 == 0:
3 exit("输入的是偶数,不能打印!")
4 half_line = line // 2 + 1
5 # 打印上半部分
6 for i in range(half_line):
7 print(" " * (half_line - i - 1), end="")
8 if i == 0:
9 print("*")
10 else:
11 print("*", end="")
12 print(" " * (2 * i - 1), end="")
13 print("*")
14 # 打印下半部分
15 for j in range(half_line - 1):
16 print(" " * (j + 1), end="")
17 # 判断是否到最后一行
18 if j == half_line - 2:
19 print("*")
20 else:
21 print("*", end="")
22 print(" " * (line - 4 - 2 * j), end="")
23 print("*")
6、用户输入成绩,程序自动判断出成绩的类型:成绩>=90分用A表示,80~89分用B表示,70~79分用C表示,其他用D表示。
1 while True:
2 score = input("请输入你的成绩:")
3 if score == 'exit' or score == 'q':
4 exit()
5 s = float(score)
6 if s >= 90:
7 print("A")
8 elif 89 >= s >= 80:
9 print("B")
10 elif 79 >= s >= 70:
11 print("C")
12 else:
13 print("D")
7、判断101~200之间有多少个素数(质数),并输出所有的素数(质数)。
1 prime_num = []
2 start = 101
3 end = 200
4 for i in range(start, end):
5 is_prime = True # 通过使用标志位来判断是否是素数
6 for j in range(2, int(i ** 0.5) + 1):
7 if i % j == 0:
8 is_prime = False
9 if is_prime:
10 prime_num.append(i)
11 print(prime_num)
8、打印水仙花数,水仙花数是指一个三位数,其各位数字的立方和等于该数本身。例如,153是一个水仙花数,
153=1**3 + 5**3 + 3**3
1 # 方法一,打印三位数中的水仙花数
2 start = 101
3 end = 1000
4 for i in range(start, end):
5 bai = i // 100 # 取百位数
6 # 取十位数和个位数
7 shi, ge = (i - bai * 100) // 10, i % 10
8 if bai ** len(str(i)) + shi ** len(str(i)) + ge ** len(str(i)) == i:
9 print(i)
10
11 # 方法二:打印1~1千万个数中的水仙花数
12 start = 1
13 end = 10 ** 7
14 for i in range(start, end + 1):
15 sm = 0
16 for j in str(i):
17 sm += (ord(j) - 48) ** len(str(i))
18 if sm == i:
19 print(i)
20
21 # 方法三:使用列表推导式
22 daffo_num = [j for j in range(1, 10 ** 5)
23 if sum([(ord(i) - 48) ** len(str(j)) for i in str(j)]) == j]
24 print(daffo_num)
9、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符个数。
1 s = input("请输入一行字符:")
2 char_num, digit_num, space_num, other_num = 0, 0, 0, 0
3 for c in s:
4 if c.isdigit(): digit_num += 1
5 elif c.isalpha(): char_num += 1
6 elif c.isspace(): space_num += 1
7 else: other_num += 1
8 print("字母个数:", char_num)
9 print("数字个数:", digit_num)
10 print("空格个数:", space_num)
11 print("其他字符个数:", other_num)
10、打印近似圆,只要给定不同的半径,圆的大小就会随之发生改变。
1 raidus = int(input("请输入圆的半径:"))
2 for i in range(2 * raidus + 1):
3 half = round((raidus ** 2 - (raidus - i) ** 2) ** 0.5)
4 print(" " * (raidus - half), end="")
5 print("*", end="")
6 print(" " * half * 2, end="")
7 print("*")
11、输入一半的行数,输出对称字符,例如输入3,输出:
----c----
--c-b-c--
c-b-a-b-c
--c-b-c--
----c----
代码如下:
1 line = int(input("请输入一半的行数:"))
2 # 打印上半部分
3 for i in range(line):
4 print("-" * (line * 2 - 2 - 2 * i), end="")
5 my_list = []
6 for j in range(i + 1):
7 my_list.append(chr(96 + line - j))
8 for j in range(i):
9 my_list.append(chr(ord(my_list[-1]) + 1))
10 print("-".join(my_list), end="")
11 print("-" * (line * 2 - 2 - 2 * i))
12 # 打印下半部分
13 for i in range(line - 1):
14 print("-" * (2 * (i + 1)), end="")
15 # 换一种方式初始化列表
16 my_list = [chr(96 + line - j) for j in range(line - 1 - i)]
17 for j in range(line - 2 - i):
18 my_list.append(chr(ord(my_list[-1]) + 1))
19 print("-".join(my_list), end="")
20 print("-" * (2 * (i + 1)))