python---练习2

目录

1、打印图案

(1)直角三角形

(2)九九乘法表

(3)胖三角形

(4)反直角三角形

(6)等腰三角形

(7)倒立等腰三角

(8)菱形

(9)空心菱形

(10)对角线菱形(风筝)

2、判断一个数是否是质数(素数)

3、设计一个程序,完成(英雄)商品的购买(界面就是第一天打印的界面) 展示商品信息(折扣)->输入商品价格->输入购买数量->提示付款 输入付款金额->打印购买小票(扩展)

4、有一些四位数,百位数字都是3,十位数字都是6,并且它们既能被2整除,又能被3整除,求这样的四位数中最大的和最小的两数各是几?

5、编程求一个四位自然数ABCD,它乘以A后变成DCBA

6、用户输入两个数a、b。如果a能被b整除或a加b大于1000,则输出a;否则输出b。

7、请输入一个数,判断这个数是偶数还是奇数,如果使用偶数,请判断从1到该数是3的倍数有哪些,如果是奇数,请判断从1到该数是5的倍数有哪些

8、某商店T恤的价格为35元/件(2件9折,3件以上8折),裤子的价格为120 元/条(2条以上9折).小明在该店买了3件T恤和2条裤子,请计算并显示小明应该付多少钱?

9、鸡兔同笼,从上面看有35个头,从下面看有94只脚,请问鸡有几只,兔有几只?

10、猜数字游戏(使用random模块完成) 电脑随机一个范围内的数,用户输入数据判断, 如果数大了,提供”数大了“ 成功之后,加上用户是否继续功能

11、猜拳游戏:石头、剪刀、布的游戏


1、打印图案

(1)直角三角形
#多层循环

layer = int(input("请输入您要打印的层数: "))

index = 1
while index <= layer :              #外层循环控制层数
    j = 1
    while j <= index :              #内层循环控制每层个数
        print ("*",end = "")
        j += 1
    print()
    index += 1

(2)九九乘法表
layer = 9

index = 1 
while index <= layer:
    j = 1
    while j <= index:
        print(f'{j}*{index}={j*index}',end="  ")#或者end="\t"
        j+=1
    print()
    index += 1

(3)胖三角形
layer = int(input("输入层数 "))
  #rang(layer):

for i in range(1, layer + 1):        
#保证层数可选,例如输入第一层的话 i=1 (1,2)1可选,2不可选
              
    for j in range(1, 2*i):           #内层循环控制个数,每行个数为2倍行数-1
        print("*",end="")
    print()

 

(4)反直角三角形
#反直角三角形

layer = int(input("层数: "))

for i in range(layer) :              #(1,layer+1)
    for j in range(layer-i-1,0,-1):    #(layer - i)
        print (" ",end="")
    for k in range(0,i+1,1):         #(i)
        print ("*",end="")
    print()


#第二种方法

for i range(layer):
    print(" " * (layer -i - 1),end "")
    print("*" * (i+1))

                    

(6)等腰三角形
layer =int(input("层数:"))

#第一种方法

for i in range(1,layer+1):
    for j in range(layer - i):
        print(" ",end="")
    for j in range(2 * i - 1):
        print("*",end = "")
    print()


#第二种方法
for i in range(1,layer+1):
    print(" " * (layer - i),end="")
    print("*" * (2 * i - 1))

 

(7)倒立等腰三角
#饭等腰三角形

layer = int(input("层数:"))

#第一种
for i in  range(layer) :
    for j in range (0,i):
        print(" ",end="")
    for k in range(2*(layer-1-i)+1,0,-1):
        print("*",end="")
    print()

#第二种
for i in range(1,layer+1):
    print(" " * (i-1),end="")
    print("*" * (2*(layer-i)+1))

#第三种
for i in range(layer,0,-1):
    print(" " * (layer - i),end="")
    print("*" * (2 * i - 1))

(8)菱形
#实心菱形
layer = int(input("层数: "))

#判断输出是否有误,灵活运用
while layer % 2== 0:              
    layer = int(input("对不起,请输入奇数行: "))
    
#上半部分
for i in range(1,layer//2+1+1):
    print(" " * (layer - i),end="")
    print("*" * (2 * i - 1))

#下半部分
for i in range(layer//2,0,-1):
    print(" " * (layer - i),end="")
    print("*" * (2 * i - 1))

(9)空心菱形
#kong心菱形
layer = int(input("层数: "))

#判断输出是否有误,灵活运用
while layer % 2== 0:              
    layer = int(input("对不起,请输入奇数行: "))
    
#上半部分
for i in range(1,layer//2+2):
    print(" " * (layer - i),end="")
    for j in range(2 * i - 1):
        #判断第一个和最后一个
        if j == 0 or j == 2*i -2:
            print("*",end="")
        else:
            print(" ",end="")
    print()

   

#下半部分
for i in range(layer//2,0,-1):            #跟上面反过来就可以,上面多一行,下面少一行
    print(" " * (layer - i),end="")
    for j in range (2*i-1):
        if j == 0 or j== 2*i-2:
            print("*",end="")
        else:
            print(" ",end="")
    print()
     
   

(10)对角线菱形(风筝)
#对角线菱形

layer = int(input("层数: "))


#判断输出是否有误,灵活运用
while layer % 2== 0:              
    layer = int(input("对不起,请输入奇数行: "))
    
#上半部分
for i in range(1,layer//2+2):
    print(" " * (layer - i),end="")
    for j in range(2 * i - 1):
        #判断第一个和最后一个
        if j == 0 or j == 2*i -2 or i == layer//2+1 or j == i-1:
            print("*",end="")
        else:
            print(" ",end="")
    print()

   

#下半部分
for i in range(layer//2,0,-1):            #跟上面反过来就可以,上面多一行,下面少一行
    print(" " * (layer - i),end="")
    for j in range (2*i-1):
        if j == 0 or j== 2*i-2 or j== i-1:
            print("*",end="")
        else:
            print(" ",end="")
    print()
     
   

2、判断一个数是否是质数(素数)

prime = int(input("任意一个数: "))

flag = True
for i in range(2,prime):
    if prime % i == 0:
        flag = False         #表示一种标识符,如果整出来,它就变错
        break
    
if flag:
    print("是质数")
else:
    print("不是")

3、设计一个程序,完成(英雄)商品的购买(界面就是第一天打印的界面) 展示商品信息(折扣)->输入商品价格->输入购买数量->提示付款 输入付款金额->打印购买小票(扩展)

# -*- coding: utf-8 -*-
while True:                                   #循环
 print("\t\t\t英雄商城登录界面\n")
 print("~*"*38)
 print("\t\t\t1.用户登录\n")
 print("\t\t\t2.用户注册\n")
 print("\t\t\t3.退出系统\n")
 print("~*"*38)
 choice = input("请输入您的选择:")
 if choice == "1":   #用户需要登录
  username = input("请输入您的用户名称:")
  password = input("请输入您的用户密码:")
  if username == "admin" and password == "888888":
   print("登录成功......\n")
   while True:                             
 #第二个界面的循环 在第二个界面上选择了3,才会退回到第一个界面
    print("\t\t\t英雄商城首页\n")
    print("~*"*40)
    print("\t\t\t1.进入英雄超市\n")
    print("\t\t\t2.休闲小游戏\n")
    print("\t\t\t3.退出登录\n")
    print("~*"*40)
    choice = input("请输入您的选择:") 
    if choice == "1":
     print("欢迎来到英雄超市")
     print("~*"*40)
     print("1.纳尔   迷失之牙  3500  100  丛林不会原谅盲目与无知")
     print("2.锐雯   放逐之刃  4000  100  她是残忍高效的战士")
     print("~*"*40)
     choice = input("请输入您的选择:") 
     if choice =="1":
      print("你选择的英雄是纳尔")
      print("英雄联盟新款皮肤折扣3.8折,需要支付70元人民币\n") 
      a =int (input("请输入购买数量:"))
      b = 70 * a
      print("你购买的皮肤,所需金额为%s"%b)
      c =int (input("请支付商品需要的金额:"))
      if b == c:
       print("  ")
       print("       支付成功")
       print("  ")
       print("~*"*40)
       print("英雄购买票据")
       print(f"英雄名称:纳尔 英雄价格:100 活动折扣:3.8 应付付款:{b} 实际付款:{b} 找零:0")
       print("~*"*40)
       input("温馨提示)按任意键返回上一级菜单: ")
     else:
       print("  ")
       print("支付金额错误,请重新支付")
     if choice == "2":
      pass
    elif choice == "2":
     print("各种休闲小游戏")
    else:
     break
  else:                                            #这是登录错误的情况
   input("用户名或密码错误,请重新登录,按任意键继续:")
 elif choice == "2":  #用户需要注册
  pass
 elif choice == "3":   #用户需要退出系统
  break
print("game 0ver")
        
        


4、有一些四位数,百位数字都是3,十位数字都是6,并且它们既能被2整除,又能被3整除,求这样的四位数中最大的和最小的两数各是几?

l=[]
for n in range(1,10):
    for m in range(1,10):
        num = 1000 * n + 100*3 + 10 * 6 + m
        if num %2 == 0 and num % 3 == 0:
            #print (f'{num}')
            l.append(num)       #把这些数数存在列表中

c=max(l)                        #用max关键字 从列表中取出最大的
print(c)
d=min(l)                        #用min关键字 从列表中取出最小的
print(d)

5、编程求一个四位自然数ABCD,它乘以A后变成DCBA

for a in range(1,10):
    for b in range(1,10):
        for c in range(1,10):
            for d in range (1,10):
                num = 1000 *a + 100 *b + 10 *c + d
                if num*a == 1000 *d +100*c +10*b +a:
                    print(num,end="  ")

6、用户输入两个数a、b。如果a能被b整除或a加b大于1000,则输出a;否则输出b。

a = float(input("请输入一个数: "))
b = float(input("请输入一个数: "))
if a%b ==0 or a+b> 1000 :
    print(a)
else:
    print(b)

7、请输入一个数,判断这个数是偶数还是奇数,如果使用偶数,请判断从1到该数是3的倍数有哪些,如果是奇数,请判断从1到该数是5的倍数有哪些

num = int(input("请输入一个数: "))
if num %2 == 0:
    print(f'{num}是偶数')
    for a in range(1,num+1):
        if a %3== 0:
            print(a,end=" ")
        
elif num %2 == 1:
    print(f'{num}是奇数')
    for b in range(1,num+1):
        if b %5== 0:
            print(b,end="  ")
        

8、某商店T恤的价格为35元/件(2件9折,3件以上8折),裤子的价格为120 元/条(2条以上9折).小明在该店买了3件T恤和2条裤子,请计算并显示小明应该付多少钱?

T_price = 35
P_price = 120
T_num = int(input("请问您需要几件衬衫: "))
P_num = int(input("请问您需要几条裤子: "))
T_su = 0
P_su = 0 
if T_num == 2:
    T_su = T_price * 2 * 0.9
    print(f'衬衫单价为35元,您选择{T_num}件,打九折,折后价为{T_su}')
elif T_num >= 3:
    T_su = T_price * T_num * 0.8
    print(f'衬衫单价为35元,您选择{T_num}件,打八折,折后价为{T_su}')
else:
    T_su = T_num * T_price 
    print(f'衬衫单价为35元,您选择{T_num}件,不打折,折后价为{T_su}')

if P_num >=2:
    P_su = P_price * 0.9 *P_num
    print(f'裤子的单价为120元,您选择{P_num}条,打九折,折后价为{P_su}')
else:
    P_su = P_price * P_num
    print(f'裤子的单价为120元,您选择{P_num}条,不打折,折后价为{P_su}')

print(f'请付款{T_su+P_su}元')

 

9、鸡兔同笼,从上面看有35个头,从下面看有94只脚,请问鸡有几只,兔有几只?

head_num ,feet_num = map(int,input().split(','))   
#表示将输入的以逗号分开,如果括号里没有东西默认以空格隔开

m = (feet_num-(head_num*2))/2   #兔子的数量
n = (head_num*4-feet_num)/2     #小鸡的数量

if m<0 or n<0 or n-int(n)!=0 :   #n和m必须是正整数或者一者为0
    print("数量不符合现实")
else:
    print(f'兔子的数量是{int(m)},小鸡的数量是{int(n)}')

10、猜数字游戏(使用random模块完成) 电脑随机一个范围内的数,用户输入数据判断, 如果数大了,提供”数大了“ 成功之后,加上用户是否继续功能

"""
import random
random.randint(0,20)表示随机生成0-20的一个整数
"""

import random as r #r是别名

compute = r.randint(0,100)

#一直猜 死循环
while True:
    my = int (input("请输入一个数: "))

    if my > compute:
        print("您财大了")
    elif my < compute:
        print("菜小了")
    else:
        print("撒花")
         #break
        choice = input("是否继续(Y)")
        if choice == "Y":
            compute = r.randint(0,100)
        else:
            print("拜拜")
            break

11、猜拳游戏:石头、剪刀、布的游戏

import random 
computer = random.randint(0,2)

while True:
    my = int(input("请输入一个数0--石头 1--布  2--剪刀: "))

    if(my==computer):
        print("平局")
    elif(my==0 and computer==1)or(my==1 and computer==2)or(my==2 and computer==0):
        print("你输了")
    elif(my==0 and computer==2)or(my==1 and computer==0)or(my==2 and computer==1):
        print("你赢了")
    choice =input("是否下一轮(Y)")
    if choice == "Y" :
        computer = random.randint(0,2)
    else:
        print("game over")
        break

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值