python - 第四次作业

目录

1、在控制台上上输入如下案例。

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

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

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

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

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

7、判断以下哪些不能作为标识符

8、求50~150之间的质数是那些?

9、打印输出标准水仙花数,输出这些水仙花数。

10、验证:任意一个大于9的整数减去它的各位数字之和所得的差,一定能被9整除.

11、一个五位数,若在它的后面写上一个7,得到一个六位数A,若在它前面写上一个7,得到一个六位数B,B是A的五倍,求此五位数.

12、小明今年18岁了,正常来说,应该在蛋糕上,插入18跟蜡烛,但是小明不是一般人,他是程序员,他考虑到18的进制是10010,所以他在蛋糕上插入了五个蜡烛,点燃了其中两跟,问:如果用户输入年龄,请你安排插入的蜡烛数和点燃的蜡烛数。


1、在控制台上上输入如下案例。

*            
***
*****
*******
*********
***********

layer=int(input("请输入打印层数:"))
#定义循环变量
i=1
#进入循环
while i<2*layer:
    print("*"*i)
    i+=2

     *        
    **        
   ***        
  ****        
 *****        
******        

layer=int(input("请输入打印层数:"))
#定义循环变量
i=1
#进入循环
while i<=layer:
    #先打印空格,去除换行
    print(" "*(layer-i),end='')
    #接着空格后面打印*
    print("*"*i)
    i+=1

     *            
    ***            
   *****        
  *******        
 *********        
***********        

layer = int ( input ( "请输入打印层数:" ) )
#定义决定空格数量的变量
j=1
#通过循环输出图案,第一行打印1个*,后面每行加两个
for i in range(1,2*layer,2) :
    #每行先打印空格,数量随行递减,每次减一
    print(" " * (layer - j) , end='')
    j+=1
    print("*" * i)


***********
 *********
  *******
   *****
    ***
     *

layer = int ( input ( "请输入打印层数:" ) )
#定义决定空格数量的变量
j=0
#通过循环输出图案,第一行打印2*layer-1个*,后面每行减两个
for i in range(2*layer-1 , 0 , -2) :
    #每行先打印空格,数量随行递增,每次加一
    print(" " * j , end='')
    j+=1
    print("*" * i)


     *
    ***
   *****
  *******
 *********
***********
 *********
  *******
   *****
    ***
     *

layer = int ( input ( "请输入打印层数:" ) )
#定义决定递减空格数量的变量
j=1
if layer % 2 == 0 :
    temp1=layer // 2
else :
    temp1=layer // 2 + 1
temp2=layer - temp1
#通过循环输出前面几行图案,第一行打印1个*,后面每行加两个
for i in range(1 , 2 * temp1 , 2) :
    #每行先打印空格,数量随行递减,每次减一
    print(" " * (temp1 - j) , end='')
    j+=1
    print("*" * i)
#定义决定递增空格数量的变量
if layer % 2 == 0 :
    y=0
else :
    y=1
#通过循环输出后面图案,第一行打印2 * temp2 - 1个*,后面每行减两个
for x in range(2 * temp2 - 1 , 0 , -2) :
    #每行先打印空格,数量随行递增,每次加一
    print(" " * y , end='')
    y+=1
    print("*" * x)

     *
    * *
   *   *
  *     *
 *       *
*         *
 *       *
  *     *
   *   *
    * *
     *    

layer = int ( input ( "请输入打印层数:" ) )
#将图案拆分为两部分,temp1为上部分;temp2为下部分
if layer % 2 == 0 :
    temp1 = layer // 2
else :
    temp1 = layer // 2 + 1
temp2 = layer - temp1
#定义图案中间的空格个数
j=1
#使用循环
while temp1 > 0 :
    #每行前面部分图案
    print(" " * (temp1-1) , end = "*")
    temp1-=1
    #第一行只需要一个*
    if temp1 == layer - temp2 - 1 :
        print()
        continue
    #每行后面部分图案
    print(" " * j , end = "*\n")
    j+=2
#判断行数为奇数还是偶数,决定后半部分第一行开始是否需要空格
if layer % 2 == 0 :
    num = 0
else :
    num = 1
#定义每行中间的空格数+2
y = temp2 *2-1
#循环
for x in range(num , temp2+1 , 1) :
    #前半部分图案
    print(" " * x , end = "*")
    #后半部分图案所需空白数量递减
    y-=2
    #判断当层数为偶数时最后一层的位置,到最后一行结束循环
    if num == 0 and x == (temp2 - 1) :
        break
    #同上,判断当层数为偶数时
    if x == temp2 and num == 1 :
        break
    #后半部分图案打印
    print(" " * y , end = "*\n")
    

    

 

     *
    ***
   * * *
  *  *  *
 *   *   *

***********
 *   *   *
  *  *  *
   * * *
    ***
     *
    

layer = int(input("请输入层数:"))
#将图案分为三份
if layer % 2 == 0 :
    temp = layer // 2 - 1
else :
    temp = layer // 2
#定义第一部分层数的循环变量
i = 0
#决定图案中间空格个数
y=-1
while i < temp :
    #空格
    for j in range(temp-i , 0 , -1) :
        print(" " , end = '')
    #图案
    for x in range(0 , 2 * i + 1) :
        #判断是否是第一和二层,一二层由*组成,后面的由*和y* 组成
        if i == 0 or i == 1 :
            print("*" , end = '')
        elif x < 3 :
            print("*"+" "*y , end = '')      
    i+=1
    y+=1
    print()
#第二部分,全由*组成
if layer % 2 == 0 :
    print("*" * (temp*2+1) )
    print("*" * (temp*2+1) )
else :
    print("*" * (temp*2+1) )
#第三部分,与第一部分相反
z=temp - 3#?
for num in range(0 , temp) :
    for num1 in range(0 , num+1) :
        print(" " , end = '')
    for num2 in range((temp-num)*2-1 , 0 , -1) :
        if num == temp-1 or num == temp-2 :
            print("*" , end = '')
        elif num2<=3  :#?
            print("*" , " "*z , end = '')
    z-=1
    print()

 

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

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


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

num=int(input("请输入一个数:"))
if num & 1 == 0 :
    print("该数为偶数")
    for i in range(1 , num+1) :
        if i % 3 == 0 :
            print(i , end = " ")
else :
    print("该数为奇数")
    for j in range(1 , num+1) :
        if j % 5 == 0 :
            print(j , end = " ")


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

Clo = int(input("购买了几件衣服?"))
Tro = int(input("购买了几条裤子?"))
#衣服价格
if Clo == 1 :
    Price_Clo = 35
elif Clo == 2 :
    Price_Clo = 35*0.9
else :
    Price_Clo = 35*0.8
#裤子价格
if Tro == 1 :
    Price_Tro = 120
elif Tro >= 2 :
    Price_Tro = 120*0.9
print(f"小明应该付钱:{Clo * Price_Clo} + {Tro * Price_Tro} = {Clo * Price_Clo+Tro * Price_Tro}")

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

Head,Leg = input("请分别输入头和腿的数量,用空格隔开:").split()
#设鸡有4条腿,总的腿的数量减去真实腿的数量就是假设每只鸡多出来的两条腿的总数
CK = (4 * int(Head) - int(Leg))/2
RB = int(Head) - CK
print("鸡的数量:%d"%CK , "兔的数量:%d"%RB)

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

import random
#引用随机数
num = random.randint(1 , 3)
#while循环来循环游戏
while 1 :
    temp = input("请输入你想要出的:")
    #输入剪刀的判定
    if temp == "剪刀" :
        j = 1
        if num == j :
            print("平局,请重新输入.")
        elif num - j == 1 :
            print("对不起,你输了")
        else :
            print("恭喜你,你赢了")
    #输入石头的判定
    elif temp == "石头" :
        j = 2
        if num == j :
            print("平局,请重新输入.")
        elif num - j == 1 :
            print("对不起,你输了")
        else :
            print("恭喜你,你赢了")
    #输入布的判定
    elif temp == "布" :
        j = 3
        if num == j :
            print("平局,请重新输入.")
        elif num - j == -2 :
            print("对不起,你输了")
        else :
            print("恭喜你,你赢了")
    #输入其他则判断为错误
    else :
        print("输入错误,请重新输入:")
    #选择是否结束游戏
    if temp == "剪刀" or temp == "石头" or temp == "布" :
        k = input("是否要继续玩(y or n):")
        if k == "n" :
            break

7、判断以下哪些不能作为标识符


    A、a
    B、¥a
    C、_12
    D、$a@12
    E、false
    F、False

答案:(B,D,F)
    

8、求50~150之间的质数是那些?

#定义从50到150的数
for i in range(50 , 151) :
    #定义除数,若整除就不是质数,则结束循环
    for j in range(2 , i) :
        if i % j == 0 :
            break
    #在大循环输出符合的数,如果在小循环中输出将会有数字重复多次
    else :
        print(i , end = " ")        

 

9、打印输出标准水仙花数,输出这些水仙花数。

#水仙花数为3位数,所以定义100到1000的数
for i in range(100 , 1000) :
    #百位
    num_H = i // 100
    #十位
    num_S = i % 100 // 10
    #个位
    num_U = i % 10
    #各个位数的三次方和等于该数,为水仙花数
    if i == num_H ** 3 + num_S ** 3 + num_U ** 3 :
        print(i)

 

10、验证:任意一个大于9的整数减去它的各位数字之和所得的差,一定能被9整除.

num = int(input("请输入一个大于9的整数:"))
#初始化该数各位数之和
temp = 0
#储存该数真值
num_true = num
#循环,丛个位逐个算出各位数之和
while num > 0 :
    temp += num % 10
    num //= 10
#验证猜想
if (num_true - temp) % 9 == 0 :
    print("该猜想成立") 

 

11、一个五位数,若在它的后面写上一个7,得到一个六位数A,若在它前面写上一个7,得到一个六位数B,B是A的五倍,求此五位数.

#循环,定义五位数的数
for i in range(10000 , 99999) :
    #该五位数向左移一位,末尾加上"7"
    num_A = str(i) + str(7)
    #该五位数向右移一位,开头加上"7"
    num_B = str(7) + str(i)
    #判断依据,若前者是后者的5倍,则输出
    if int(num_A) * 5 == int(num_B) :
        print(f"满足条件的数有:{i}")

12、小明今年18岁了,正常来说,应该在蛋糕上,插入18跟蜡烛,但是小明不是一般人,他是程序员,他考虑到18的进制是10010,所以他在蛋糕上插入了五个蜡烛,点燃了其中两跟,问:如果用户输入年龄,请你安排插入的蜡烛数和点燃的蜡烛数。


    输入:n     n>=1 n <=200
    输入x, y    x表示蜡烛总数量,y表示点燃的蜡烛数量
    案例1
    输入 18
    输出 5, 2

    案例2:
    输入 8
    输出 4    1
 

num = int(input("请输入一个数(1-200):"))
#定义一个数组储存二进制的数
temp = []
#将该数转化为倒二进制
while num > 0 :
    temp.append(num % 2)
    num //= 2
#定义点燃的蜡烛数量
num_Y = 0
#定义不点燃的蜡烛数量
num_N = 0
#判断两种蜡烛的数量
for i in temp :
    if i == 1 :
        num_Y+=1
    else :
        num_N+=1
print(f"蜡烛一共{num_Y + num_N}根,点燃的一共{num_Y}根")

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值