博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python【每日一问】26
阅读量:5086 次
发布时间:2019-06-13

本文共 2473 字,大约阅读时间需要 8 分钟。

问:

【基础题】:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数

 

【提高题】:一球从 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 '0123456789': 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)) * 2print("小球工经过", 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 = 10initial_height = 100bounce_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)

 

转载于:https://www.cnblogs.com/ElegantSmile/p/10895108.html

你可能感兴趣的文章
IO—》Properties类&序列化流与反序列化流
查看>>
测试计划
查看>>
Mysql与Oracle 的对比
查看>>
jquery实现限制textarea输入字数
查看>>
Codeforces 719B Anatoly and Cockroaches
查看>>
jenkins常用插件汇总
查看>>
c# 泛型+反射
查看>>
第九章 前后查找
查看>>
Python学习资料
查看>>
jQuery 自定义函数
查看>>
jquery datagrid 后台获取datatable处理成正确的json字符串
查看>>
ActiveMQ与spring整合
查看>>
web服务器
查看>>
第一阶段冲刺06
查看>>
EOS生产区块:解析插件producer_plugin
查看>>
JS取得绝对路径
查看>>
排球积分程序(三)——模型类的设计
查看>>
HDU 4635 Strongly connected
查看>>
ASP.NET/C#获取文章中图片的地址
查看>>
Spring MVC 入门(二)
查看>>