Python【每日一问】26
问:
【基础题】:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
【提高题】:一球从 100 米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第 10 次落地时,共经过多少米?第 10 次反弹多高?
答:
【基础题】:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
方法1:
import re
def split_func():
tmp_str = input('请输入字符串:')
char_num = 0
dig_num = 0
space_num = 0
other_num = 0
for i in range(len(tmp_str)):
if re.match('[a-zA-Z]', tmp_str[i]):
char_num += 1
elif re.match('\d', tmp_str[i]):
dig_num += 1
elif re.match('\s', tmp_str[i]):
space_num += 1
else:
other_num += 1
print('字符:', char_num)
print('数字:', dig_num)
print('空格:', space_num)
print('其他:', other_num)
split_func()
方法2:
s = input('请输入字符串:')
dic = {'letter': 0, 'integer': 0, 'space': 0, 'other': 0}
for i in s:
if i > 'a' and i < 'z' or i > 'A' and i < 'Z':
dic['letter'] += 1
elif i in '':
dic['integer'] += 1
elif i == ' ':
dic['space'] += 1
else:
dic['other'] += 1
print('统计字符串:', s)
print(dic)
print('------------显示结果2---------------')
for i in dic:
print('%s=' % i, dic[i])
print('------------显示结果3---------------')
for key, value in dic.items():
print('%s=' % key, value)
【提高题】:一球从 100 米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第 10 次落地时,共经过多少米?第 10 次反弹多高?
方法1:
# 数学方法求总位移
s = 100 + (100 * (1 - 0.5 ** 9)) * 2
print("小球工经过", s, "米")
# 第10次小球弹起高度
def get_height_of_bounce(initial_height):
bounce_off_height = initial_height / 2
while True:
yield bounce_off_height
bounce_off_height = bounce_off_height / 2
number_of_bounce = 10
initial_height = 100
bounce_off_heights = []
bounce_height = get_height_of_bounce(initial_height)
for i in range(number_of_bounce):
bounce_off_heights.append(bounce_height.__next__())
print("每次小球弹起的高度为", bounce_off_heights)
print("第10次弹起高度为", bounce_off_heights[9], "米")
方法2:
def cal_distance(n: int) -> None:
distance = 100
height = distance / 2
for i in range(2, n+1):
distance += 2 * height
height /= 2
print(f"经过{n}次落地后总长{distance}")
print(f"经过{n}次落地后反弹高度{height}")
cal_distance(2)
cal_distance(3)
cal_distance(10)
方法3:
def reboud(n):
height = 100
sum_distance = 100
for i in range(1, n+1):
reboud_height = (0.5 ** i) * height
sum_distance += (reboud_height * 2)
if i == n-1:
print("第{}次落地经过的总距离为{}米".format(n, sum_distance))
print("第{}次反弹的高度为{}米".format(n, reboud_height))
reboud(10)
Python【每日一问】26的更多相关文章
- [python每日一练]--0012:敏感词过滤 type2
题目链接:https://github.com/Show-Me-the-Code/show-me-the-code代码github链接:https://github.com/wjsaya/python ...
- Python 每日一练(5)
引言 Python每日一练又开始啦,今天的专题和Excel有关,主要是实现将txt文本中数据写入到Excel中,说来也巧,今天刚好学校要更新各团支部的人员信息,就借此直接把事情做了 主要对于三种数据类 ...
- Python每日一练(1):计算文件夹内各个文章中出现次数最多的单词
#coding:utf-8 import os,re path = 'test' files = os.listdir(path) def count_word(words): dic = {} ma ...
- python每日一函数 - divmod数字处理函数
python每日一函数 - divmod数字处理函数 divmod(a,b)函数 中文说明: divmod(a,b)方法返回的是a//b(除法取整)以及a对b的余数 返回结果类型为tuple 参数: ...
- 每日一问:Android 消息机制,我有必要再讲一次!
坚持原创日更,短平快的 Android 进阶系列,敬请直接在微信公众号搜索:nanchen,直接关注并设为星标,精彩不容错过. 我 17 年的 面试系列,曾写过一篇名为:Android 面试(五):探 ...
- 每日一问:谈谈 volatile 关键字
这是 wanAndroid 每日一问中的一道题,下面我们来尝试解答一下. 讲讲并发专题 volatile,synchronize,CAS,happens before, lost wake up 为了 ...
- 每日一问:讲讲 Java 虚拟机的垃圾回收
昨天我们用比较精简的文字讲了 Java 虚拟机结构,没看过的可以直接从这里查看: 每日一问:你了解 Java 虚拟机结构么? 今天我们必须来看看 Java 虚拟机的垃圾回收算法是怎样的.不过在开始之前 ...
- 每日一问:你了解 Java 虚拟机结构么?
对于从事 C/C++ 程序员开发的小伙伴来说,在内存管理领域非常头疼,因为他们总是需要对每一个 new 操作去写配对的 delete/free 代码.而对于我们 Android 乃至 Java 程序员 ...
- 每日一问:LayoutParams 你知道多少?
前面的文章中着重讲解了 View 的测量流程.其中我提到了一句非常重要的话:View 的测量匡高是由父控件的 MeasureSpec 和 View 自身的 `LayoutParams 共同决定的.我们 ...
- 每日一问:简述 View 的绘制流程
Android 开发中经常需要用一些自定义 View 去满足产品和设计的脑洞,所以 View 的绘制流程至关重要.网上目前有非常多这方面的资料,但最好的方式还是直接跟着源码进行解读,每日一问系列一直追 ...
随机推荐
- Java内功心法,行为型设计模式
行为型 1. 责任链(Chain Of Responsibility) Intent 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系. 将这些对象连成一条链,并沿着这条链发送该 ...
- 1.Shell特殊位置变量
$0 文件名及路径 $1,$2 参数1,参数2 , 也可以用${1} 和 ${2} 来表示 $# 传递给脚本或函数的参数个数 $$ 当前Shell进程ID $? 判断上 ...
- 【转载】Gradle学习 第七章:Java快速入门
转载地址:http://ask.android-studio.org/?/article/22 7.1. The Java plugin(Java插件) As we have seen, Gradle ...
- B端产品需求文档怎么写?
B端,或者2B,一般指的是英文中的 to busniss,中文即面向企业的含义.与B端相对应的,是C端,或者2C,同样指的是英文中的 to customer,即面向消费者的意思.因此,人们平常所说的B ...
- HBase安装指南
一.事前准备 此安装是建立在hadoop集群运行起来的基础上,此hadoop版本为2.6.0,其他版本未测试,可能存在兼容性问题. 上传所需文件到/usr/local/soft 二.zookeep ...
- linux中find命令的使用详解(转载)
常用命令 find (目录) [-type d | f] (文件夹 | 文件) -name (名称,可使用正则表达式) find /root -name "*core&q ...
- Django框架(三)-- orm增删改查、Django生命周期
一.orm介绍 1.什么是orm ORM即Object Relational Mapping,全称对象关系映射. 2.使用orm的优缺点 优点: 不用写SQL语句 开发效率高 缺点: SQL的效率低 ...
- windows打印机服务自动关闭解决方案
先点击右键点属性,启动方式选自动,然后(1)删除 C:\WINDOWS\system32\spool\PRINTERS 目录下的所有文件.(2)删除注册表 \HKEY_LOCAL_MACHINE\SY ...
- python 使用sort 对列表排序的性能测试
首先对一百万数据进行排序: 对一千万数据进行排序: 对一亿数据进行排序:
- Nginx+Tomcat实现动静分离和负载均衡
一.什么是动静分离? Nginx动静分离简单来说就是把动态和静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离.严格意义上说应该是将动态请求和静态请求分开,可以理解成使用Nginx处理静态 ...