一、如何判断输入的数是否是回文数:
回文数如12321,个位与万位相同,十位与千位相同
方法(1):利用字符串的逆整切片与原有字符串进行比较是否相等。如下:
num = input("请输入一个数字:")
new_num = num[::-1]
if num == new_num:
print("是回文数")
else:
print("不是回文数")
方法(2):通过索引比较,并设置标志位,如下:
num = input("请输入一个数字:")
l = len(num)
tag = 1
for i in range(l//2):
if num[i]!=num[l-i-1]:
tag = 0
if tag:
print("是回文数")
else:
print("不是回文数")
方法(3)通过索引比较,利用for—else结构,如下:
当for循环正常结束(即不执行break)时会执行else语句中的内容
num = input("请输入一个数字:")
l = len(num)
for i in range(l//2):
if num[i]!=num[l-i-1]:
print("不是回文数")
break
else:
print("是回文数")
二、九九乘法表打印
方法(1)采用for循环打印
for i in range(1,10):
for j in range(1,i+1):
print("{}*{}={}".format(j,i,i*j),end="\t")
print()
方法(2)采用while循环打印
i=1
while i<=9:
j=1
while j<=i:
print("{}*{}={}".format(j,i,i*j),end="\t")
j+=1
print()
i+=1
三、打印图形
3.1、打印直角三角形
方法(1)采用一层循环
for i in range(1,9):
print("*"*i)
方法(2)采用两层循环
for i in range(1,9):
for j in range(1,i+1):
print("*",end="")
print()
3.2、打印空心直角三角形
for i in range(1,9):
for j in range(1,i+1):
if j ==1 or j ==i or i==8:
print("*",end="")
else:
print(" ",end="")
print()
输出:
*
**
* *
* *
* *
* *
* *
********
3.3、打印等腰三角形
思路:先打印出一个倒三角的空格图,再打两个直角三角形
for i in range(1,9):
for k in range(1,9-i):
print(" ",end="")
for j in range(1,i+1):
print("*",end="")
for j in range(1,i):
print("*",end="")
print()
简化为:
for i in range(1, 11):
for k in range(1, 11 - i):
print(" ", end="")
for j in range(1, 2 * i):
print("*", end="")
print()
输出:
*
***
*****
*******
*********
***********
*************
***************
3.4、打印菱形
方法(1)解题思路:相当于打印两个等腰三角形,需要注意的是最长的一行只能打印一次
for i in range(1, 9):
for k in range(1, 9 - i):
print(" ", end="")
for j in range(1, 2*i):
print("*", end="")
print()
for i in reversed(range(1,8)):
for k in range(1, 9 - i):
print(" ", end="")
for j in range(1, 2*i):
print("*", end="")
print()
输出:
*
***
*****
*******
*********
***********
*************
***************
*************
***********
*********
*******
*****
***
*
方法(2)使用center方法打印菱形
原理如下:
print(("*"*1).center(5," "))
print(("*"*3).center(5," "))
print(("*"*5).center(5," "))
print(("*"*3).center(5," "))
print(("*"*1).center(5," "))
输出:
*
***
*****
***
*
改进之后的代码为:
for i in range(1, 8, 2):
print(("*" * i).center(7, " "))
for i in reversed(range(1, 6, 2)):
print(("*" * i).center(7, " "))
输出:
*
***
*****
*******
*********
*******
*****
***
*