3位水仙花数计算pythonoj_Python习题(第3课)

一、独一无二的路

从前有一只小小的机器人叫小器,小器站在一个M*N的格子地板的最左上角,很孤单,世界辣么大,它也想去看看,经过不懈的努力它终于可以(只能)向下或者向右移动啦,它有一个宏伟的愿望就是要穿过格子地板到达右下角的砖,所以如果小器告诉你M和N,你能不能帮它计算一下这中间可以有多少条独一无二的路径?

代码如下:(递归,个人喜欢,但可能会超出时间)

1 defway(m,n,i,j):2 if i==m or j==n:3 return04 elif i==m-1 and j==n-1:5 return 1

6 elif i==m-1 and j!=n-1:7 return way(m,n,i,j+1)8 elif i!=m-1 and j==n-1:9 return way(m,n,i+1,j)10 else:11 return way(m,n,i+1,j)+way(m,n,i,j+1)12

13 m=int(input())14 n=int(input())15 print(way(m,n,0,0))

二、括号配对检测 A

用户输入一行字符串,其中可能包括小括号 (),请检查小括号是否配对正确,配对成功与否分别输出:

配对成功,配对不成功

其中,小括号配对要考虑配对顺序,即()表示配对,)(不是配对,只考虑小括号配对。

代码如下:

defparentheses(temp):

list1=[]for i in range(len(temp)): #除去其他,剩下(),放在list1

if temp[i]=='(' or temp[i]==')':

list1.append(temp[i])

list2=[] #存放(,相当于栈

if len(list1)==0: #排除明显正确

returnTrueelif list1[0]==')': #排除明显错误

returnFalseelif len(list1)%2!=0:returnFalseelse:for i inrange(len(list1)):if list1[i]=='(':

list2.append(list1[i])elif list1[i]==')' and len(list2)!=0:

list2.pop()else:returnFalsereturnTrue

temp=input()ifparentheses(temp):print('配对成功')else:print('配对不成功')

三、垂直Hello World

垂直输出"Hello World",全部代码不超过2行。

代码如下:

print(*'Hello World',sep='\n')

四、斐波那契数列计算

斐波那契数列如下:F(0) = 0, F(1) = 1

F(n) = F(n-1) + F(n-2)

编写一个计算斐波那契数列的函数,采用递归方式,输出不超过n的所有斐波那契数列元素。

调用上述函数,完成如下功能:

用户输入一个整数n,输出所有不超过n的斐波那契数列元素、输出数列的元素和及平均数,输出按照顺序,用英文逗号和空格分割。

代码如下:

defFibon(num):if num==0:return0elif num==1:return 1

elif num>1:return Fibon(num-1)+Fibon(num-2)

num=int(input())

list1=[]for i in range(num+1):

list1.append(Fibon(i))print(list1[-1],end=',')print(sum(list1),sum(list1)//len(list1),sep=',')

五、3位水仙花数计算

“3位水仙花数”是指一个三位整数,其各位数字的3次方和等于该数本身。例如:ABC是一个“3位水仙花数”,则:A的3次方+B的3次方+C的3次方 = ABC。

请按照从小到大的顺序输出所有的3位水仙花数,请用一个“逗号+空格”分隔输出结果。

注意:这是一个OJ题目,输出格式要严格一致,最后一位水仙花数后没有逗号。

代码如下:

defNarcissus():

list1=[]for num in range(100,1000):

a=num//100b=num//10%10c=num%10

if num==a**3+b**3+c**3:

list1.append(num)returnlist1

str1=','.join(map(str,Narcissus()))print(str1)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值