Python:酒鬼漫步

问题描述

酒鬼漫步

在一条东西走向的大马路上,酒鬼所处的初始位置假定为原点,酒鬼随机向东(正向)或向西(反向)走一步。请使用所学的知识解决以下问题:

  • 1)酒鬼随机走了1000步,打印输出酒鬼的走步。(可假定-1为向西走,+1为向东走,如:-1,-1,1,-1,1,…-1)
  • 2)打印输出,酒鬼任意一次走完后距离原点的步数。(如:-1,-2,-1,-2,-1,0,1,2,1…46)
  • 3)打印输出,酒鬼最后距离原点的步数。
  • 4)打印输出,酒鬼正向走的最远步数。
  • 5)打印输出,酒鬼反向走的最远步数。
  • 6)计算酒鬼第一次距离原点5步的时候(可以是正向5步,也可以是反向5步)。此时酒鬼共走了多少步?

分析

题目非常的简单,看到题目中有一个要求是计算任意一次走完后的距离原点的步数,就是累积求和函数,可以使用numpy库的相关方法实现,所以我们使用numpy库函数。

代码实现

考虑到数据量的问题,这里以 100 步进行演示。

import numpy as np
# choice函数接收一个迭代对象和大小,这里选择100次
lt = np.random.choice([1, -1], 100)

print('-----------------1.酒鬼的走步-------------------')
print(lt)
cum_sum = lt.cumsum()
print('--------2.酒鬼任意一次走完后距离原点的步数----------')
print(cum_sum)
su = lt.sum()
print('------------3.酒鬼最后距离原点的步数--------------')
print(su)
print('-------------4.酒鬼正向走的最远步数---------------')
# 返回的是下标,这里考虑到下标是从零开始的,所以加一
print(cum_sum.argmax() + 1)
print('-------------5.酒鬼反向走的最远步数---------------')
print(cum_sum.argmin() + 1)
count = 0
for i in cum_sum:
    count += 1
    if i == 5 or i == -5:
        break
print('--------6.第一次距离原点5步的时候走的步数-----------')
print(count)

执行结果:

全部评论

相关推荐

02-19 13:42
门头沟学院 Java
运气爆棚福星高赵:清✌️不用很在意项目,八股算法是重点,八股算法说的过去绝对要您
点赞 评论 收藏
分享
会飞的猿:我看你想进大厂,我给你总结一下学习路线吧,java语言方面常规八股要熟,那些java的集合,重点背hashmap八股吧,jvm类加载机制,运行时分区,垃圾回收算法,垃圾回收器CMS、G1这些,各种乐观锁悲观锁,线程安全,threadlocal这些。在进阶一些的比如jvm参数,内存溢出泄漏排查,jvm调优。我这里说的只是冰山一角,详细八股可以去网上找,这不用去买,都免费资源。mysql、redis可以去看小林coding,我看你简历上写了,你一定要熟,什么底层b+树、索引结构、innodb、mvcc、undo log、redo log、行级锁表级锁,这些东西高频出现,如果面试官问我这些我都能笑出来。消息队列rabbitmq也好kafka也好,学一种就行,什么分区啊副本啊确认机制啊怎么保证不重复消费、怎么保证消息不丢失这些基本的一定要会,进阶一点的比如LEO、高水位线、kafka和rocketmq底层零拷贝的区别等等。计算机网络和操作系统既然你是科班应该理解起来问题不大,去看小林coding这两块吧,深度够了。spring boot的八股好好看看吧,一般字节腾讯不这么问,其他的java大厂挺爱问的,什么循环依赖啥的去网上看看。数据结构的话科班应该问题不大,多去力扣集中突击刷题吧。项目的话其实说白了还是结合八股来,想一想你写的这些技术会给你挖什么坑。除此之外,还有场景题、rpc、设计模式、linux命令、ddd等。不会的就别往简历上写了,虽然技术栈很多的话好看些,但背起来确实累。总结一下,多去实习吧,多跳槽,直到跳到一个不错的中厂做跳板,这是一条可行的进大厂的路线。另外,只想找个小厂的工作的话,没必要全都照这些准备,太累了,重点放在框架的使用和一些基础八股吧。大致路线就这样,没啥太多难度,就是量大,你能达到什么高度取决于你对自己多狠,祝好。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务