Datawhale组队学习专用-chap2_hw

第一题:

Is Number
题目描述
我们会为变量 x 赋值,你需要编写程序,判断其是否为数字数据类型,若是返回 True,否则返回 False。

输入格式
Python 数据类型

输出格式
返回 True 或者 False

输入样例-1
100
输出样例-1
True
输入样例-2
'p2s'
输出样例-2
False
import decimal as numpy
import numbers
x = eval(input())  
print(isinstance(x, numbers.Number))#检查变量x是否是numbers.Number的实例,引入的numbers包括python用到的所有数字类型 有点没太理解这种写法。。

第二题:

Egg Cartons
题目描述
我们会输入一个非负整数 eggs,代表鸡蛋个数,你需要编写程序,输出存放这些鸡蛋的最小纸箱的数目,它应该是个整数。 ​一个纸箱最多能容纳 12 枚鸡蛋​。

输入格式
一个非负整数,代表鸡蛋个数。

输出格式
一个整数,代表纸箱数。

输入样例-1
0
输出样例-1
0
输入样例-2
4
输出样例-2
1
输入样例-3
48
输出样例-3
4
import ast
import math
eggs = ast.literal_eval(input())
if (eggs % 12) > 0: #一个箱子子可以放12个,取模大于0就说明还有剩多要一个箱子
    print((eggs // 12) + 1 )
else:
    print(eggs // 12)#刚好除完没有余数

第三题:

Number Of Pool Balls
题目描述
台球按行排列,其中第一行包含 1 个台球,每一行最多比上一行多 1 个球,填满这一行之后才可以填充下一行。例如,3 行总共包含 6 个台球 (1+2+3)。输入一个 int 整数 n,代表台球的总行数,要求编写程序,输出 n 行的总台球数。

输入格式
一个 int 整数 n。

输出格式
一个 int 整数,代表总的台球数。

输入样例
3
输出样例
6
提示说明
对于 n 的值,我们不会设置上限,也就是说可以包含无限数量的行。
​本题不允许使用字符串索引、循环、列表与列表索引、递归​,但是我们不限制if的使用。
import ast
n = ast.literal_eval(input())
print(int(n*(n+1)/2))#看作等差数列求和问题

第四题:

Number of Pool Ball Rows
题目描述
本题是 Number of Pool Ball Rows 的相反操作。台球按行排列,其中第一行包含 1 个台球,每一行最多比上一行多 1 个球,填满这一行之后才可以填充下一行。例如,3 行最多包含 6 个台球 (1+2+3)。输入一个 int 整数 n,代表台球总数,要求编写程序,输出 row 代表台球的总行数

输入格式
一个 int 整数 n,代表台球总数。

输出格式
一个 int 整数,代表台球的总行数

输入样例-1
6
输出样例-1
3
输入样例-2
4
输出样例-2
3
提示说明
对于 n 的值,我们不会设置上限,也就是说可以包含无限数量的行。
​本题不允许使用字符串索引、循环、列表与列表索引、递归​,但是我们不限制 if 的使用。
import ast
import math
import numbers
n = ast.literal_eval(input())# 现在程序中有一个整数 n
x = 2 * n + 0.25 #看作是上一题的反向计算求行数n
x = math.sqrt(x) #根据等差数列求和反向计算
x = x- 0.5
if (x % 1) == 0:#若求模刚好为0意思是球在最后一行,行的最后一个那么x就是行数
   b = int(x) #需要变为int数据类型
   print(b)
else:
    b = int(x) #若求模不为0意思是球没在行末没有放完 需要多一行x+1就是行数
    print(b + 1 )

第五题:

Get Kth Digit
题目描述
我们会输入 2 个非负的 int 整数 n 和 k 。你需要编写程序,返回整数 n 从右开始数的第 k 个数字(下标从 0 开始)

输入格式
2 个非负的 int 整数 n 和 k,以,分隔。

输出格式
1int 整型数

输入样例
789,1
输出样例
8
提示说明
​本题不允许使用字符串索引(如 n[k])、循环、列表与列表索引、递归​,但是我们不限制 if 的使用。
个位
number % 10==number / 1 % 10  1就可以看作是100次方
十位
number / 10 % 10              10就可以看作是101次方
百位
number / 100 % 10             100就可以看作是102次方
千位
number / 1000 % 10            1000就可以看作是103次方
将题目中的k看作是次方数,接下来就是类型转换的事了
import ast
n, k = ast.literal_eval(input())
a = k * str(0)#看一下k为几,然后就乘几个0
#print(a)
a = int(str(1)+ a) #使用str类型将1和0连接起来,再转换为int
#print (a)
b = n // a #这样无论是多少位我们都可以得到想要的位数和它前面那一位
#print(b)
b = b % 10#对10取模就能得到这个数字
print(b)

做这些题目的时候没看视频,还是有点阻力,刚开始我觉得这些很简单的,做作业的时候第一题就卡了好久,最后骆师傅说搞了ai反检测。不过也符合我自己的策略,先做题,不会的硬是做不成的搁置带着问题去听课。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值