python_习题练习

关于A+B的计算

#看到题目最开始的做法呢是这样的
A=int(input())
B=int(input())
print(A+B)
#但是看到输出样例 需要符合一定的格式所以这个写法就瞬间给pass了。
#后来去翻看了资料发现可以使用切片的方式的进行计算于是就有了下面这段
a=input().split()
print(int(a[0])+int(a[1]))
#当然这个只适合两数运行,适当修改也可以完成其他运算。

关于100以内的累加运算

#这一题看到时候同样有了一种惯性,上来就是for循环(结果一顿操作后,内存电脑卡死。。。)
#初始算法是这样的:
sum = 0 a = int(input()) for i in range(1,a+1): sum += a print(sum) #嗯?没错就是上面这段,在运行较少的数值时,计算还是蛮快的,但是当数值更大时,就有点力不从心了,所以这个算法又pass了T ^ T #然后又要去解决,就又是一顿查呀。。。。过程太虐心,就不说了。 #最后听我妹说某书上有这个算法,完全不用这样一个一个算的,好吗!!! #于是就有了下面这段:
a
= int(input()) n = int((a+1)*a/2) print(n) ...... 注:如果不会请翻翻书:)

关于考察团的问题

# 某饭店招待国外考察团。按照标准,对领导是400元/人,随团职员200元/人,对司机50元/人。
# 考察团共36人,招待费结算为3600元,请问领导、职员、司机各几人。

# 36 == a+b+c
# 3600 == (400*a)+(200*b)+(50*c)

for i in range(1,37):
    for j in range(37-i):
        for k in range(37-i-j):
            if 36 - i - j == k and (400*i)+(200*j)+(50*k) == 3600:
                print(i,j,k)

#简单粗暴。。。

关于三国排列的题目

#这题又是不得不说的一个了,卡了我好久关键我还借鉴不到,心累
#要安排:3个A国人,3个B国人,3个C国人坐成一排。
#要求不能使连续的3个人是同一个国籍。
#求所有不同方案的总数?
#查到大部分都是关于C,java的解题,这让学python的我该怎么办,都看不动它们 V^V
#经过漫长的调试验证,终于解出来了,虽然在过程中我发挥的作用很低。。。不说了看代码:


import itertools
a = 0
sum = 0
for i in itertools.permutations("AAABBBCCC",9):
    a += 1
    n = 0
    for n in range(7):
        list2 = i[n]+i[n+1]+i[n+2]
        if list2 == 'AAA' or list2 == 'BBB' or list3 = 'CCC':
            sum += 1
            break
print(a-sum)

#注:非常感谢老师的帮助 o(* ̄▽ ̄*)ブ

除去次方数

#自然数的平方数是:1 4 9 16 25 …
# 自然数的立方数是:1 8 27 64 125 …
# 自然数的4次方数是:1 16 81 256 …
#
# 这些数字都可以称为次方数。
# 1~10000中,去掉所有的次方数,还剩下多少个数字?
#这题就很快做出来了,主要本人最大的问题是开始的取值范围以及没存放容器
#最后卡在,为什么会缺1的问题上T v T,(1也是次方数呀)

sum=1
num=0
char2=[]                            #建立一个空列表
for a in range(1,101):          #底数取值开始循环
    for b in range(2,15):       #指数取值开始循环
        n = 0
        sum=pow(a,b)           #每次次方数的结果
        if sum > 10001:         #判断次方数的最大值不能超过10000
            num += 1    
            break                    #如果超出结束循环,不计数
        char2.append(sum)    #将得到的次方数放进列表中
        n += 1
n=len(list(set(char2)))        #计算列表中数值的长度
print("次方数的个数为:",n)
print("1~10000中去掉所有的次方数的个数为:",10000-n)

#嗯~ o(* ̄▽ ̄*)o,大概就是这个样子,但是脑袋瓜现在不够用啦,就不继续想别的方法了    

关于三人年龄问题

#三个神秘蒙面人来访F博士。
#博士询问他们年龄时,他们说:我们中年龄最小的不超过19岁。我们3人年龄总和为70岁。且#我们三人年龄的乘积是所有可能情况中最大的。
#请帮助F博士计算他们的年龄,从小到大排列,用逗号分开。

#被问我为什么这题会放在这里,问就是我之前没做出来。。。
ss = 0
for i in range(20):
    for j in range(50):
        k = 70-i-j
        if (i*j*k>ss):
            ss=i*j*k
            x = i
            y = j
            z = k
print("i:",x,",j:",y,",k:",z,",最大年龄乘积:",ss)

 

posted @ 2019-12-12 15:38  MTcx  阅读(317)  评论(0)    收藏  举报