Python学习10--习题1

一、如何判断输入的数是否是回文数
回文数如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, " "))

输出:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值