第一题:
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,以,分隔。
输出格式
1 个 int 整型数
输入样例
789,1
输出样例
8
提示说明
本题不允许使用字符串索引(如 n[k])、循环、列表与列表索引、递归,但是我们不限制 if 的使用。
个位
number % 10==number / 1 % 10 1就可以看作是10的0次方
十位
number / 10 % 10 10就可以看作是10的1次方
百位
number / 100 % 10 100就可以看作是10的2次方
千位
number / 1000 % 10 1000就可以看作是10的3次方
将题目中的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反检测。不过也符合我自己的策略,先做题,不会的硬是做不成的搁置带着问题去听课。