python基础编程20191224

1.换硬币

本题我首先第一没看懂题目,要换的零钱单位也是分,我以为是块,但是因此导致我注意到当是块时,如果用浮点数表示精度会不够,必须要先*10这样计算,还有就是过程中的剩余钱数temp我之前用一个变量进入到两个循环中了,但是第二个循环过后,temp值不能再进行下去了,变为负值。

m=int(input())
r={5:1,2:1,1:1}
i=int(m/5)
count=0
while i >0:
    temp1=m-i*5
    r[5]=i
    j=int(temp1/2)
    while j>0:
        temp2=temp1-j*2
        r[2]=j
        k=int(temp2/1)
        if(k>0):
            r[1]=k
            count=count+1
            print("fen5:{0:d}, fen2:{1:d}, fen1:{2:d}, total:{3:d}".format(r[5],r[2],r[1],r[5]+r[2]+r[1]))
        j=j-1
    i=i-1
print('count =',count)

2.水仙花数

我记得之前写C的时候也遇到这个题目,但是python有个更简单的方法,因为取各个位数的话,C可能要用到%/的循环,而python可以转为str后转为list,这样就获取了每一位的字符,之后转为int即可

n=int(input())
for i in range(10**(n-1),(10**n)-1):
    temp=[int(j)**n for j in list(str(i))]
    if sum(temp)==i:
        print(i)

3.猴子选大王

我一共犯了两个错误首先range生成的是从0开始的,因此print的时候要+1,另外当pop后,i虽然应该+3,但是pop了一个本来就应该往前挪一个,因此i-1。

n=int(input())
new=list(range(0,n))
i=2
while len(new)>1:
    if i >=len(new):
        i=i%len(new)
    new.pop(i)
    i=i+3-1
print(new[0]+1)

4.图的字典表示

我觉得我的bug在于如果有重复a-b或者b-a的没法判断,但是现在题目不需要= =

n=int(input())
d={}
line=0
length=0
for i in range(0,n):
   d.update(eval(input()))
for key, value in d.items():
    line=line+len(value)
    for j,k in value.items():
        length=length+k
print(n,line,length)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

就是一只白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值