《Python 程序设计》张莉主编 第五章:程序控制结构 课后习题答案(二)

前言

接上文,最近摆烂了(不严谨,最近在复现何凯明博士的图像去雾算法论文)

 


正文

题目六

  • 题目:从键盘上输入一个字符串,用字典相关方法来统计每个字母(按字母顺序,且不区分大小写)出现的次数。例如,字符串“I am a student.”的统计结果为[2,0,0,1,1,0,0,0,1,0,0,0,1,1,0,0,0,0,1,2,1,0,0,0,0,0] 表示字符'A'或'a'共出现了2次,字符'D'或'd'共出现了1次,依此类推。
  • 代码实现
    # 实现对列表的切片
    def dict_slice(adict, start, end):
        keys = adict.keys()
        dict_slice = {}
        for k in list(keys)[start:end]:
            dict_slice[k] = adict[k]
        return dict_slice
    
    
    test = input("输入一个字符串:")
    test = test.lower()
    
    
    dict = {}.fromkeys((chr(i) for i in range(97,123)),0) #生成26个字母的字典
    
    for j in test:
        if j not in dict:
            dict[j] = 1
        else:
            dict[j] += 1
            
    res = dict_slice(dict,0,26)
    
    print(res.values())

     

题目七 

  • 题目:从键盘输入一个 2-1000 之间的整数 n , 对其进行指数分解,输出分解后的式子。
  • 代码实现
    n = int(input("请输入一个数:"))
    print(n ,'= ',end=' ')
    
    temp = [] 
    while n!=1:
        for i in range(2,n+1):
            if n % i == 0:
                temp.append(i) 
                n = n // i
                break
    
    for i in range(len(temp)):
        if i!=len(temp)-1:
            print("%d * " % temp[i],end='')
        else:
            print("%d " % temp[i],end='')

     

题目八 

  • 题目:验证命题:如果三个整数是 37 的倍数,则这个整数循环左移后得到的两个三位数也是 37 的倍数。 命题为真则输出“这是一个真命题”;命题为假则输出“这是一个假命题”。
  • 代码实现
    test = []
    
    # 生成所有 37 倍数的三位整数
    for i in range(0,1000):
        if i*37 > 99 and i*37 < 1000:
            test.append(i*37)
        else:
            continue
    res = []
    for j in test:
        a = j//100 # 个位
        b = j%100//10 # 十位 
        c = j%100%10 # 百位
    
        res_1 = b*100 + c*10 + a
        res_2 = c*100 + a*10 + b
        res.append(res_1)
        res.append(res_2)
        
    for k in res:
        if k < 100 or k > 999: # 判断左移后存在 0 的数字
            continue
        if k%37 != 0 and k%37 != 0:
            print("这是一个假命题")
        else:
            print("这是一个真命题")

     

题目九 

  • 题目:黑洞数(Kaprekar 问题)又称陷阱数,是具有奇特转换特性的整数,对于任何一个数字不全相同的 4 位整数,经有限“重排求差”操作例如把组成该数的数字的数字重排后得到的最大数减去重排后的最小数得到一个新数(在过程保持数字位数都是 4 ,不足根据数值补 0 ,例如一个 4 位 456 补 0后得到 0456),反复执行如下操作,最后一定会得到 4 位数的黑洞数 6174 。输入一个 4 位正整数计算并输出到达黑洞数 6174 的完整过程,若输入的 4 位整数各位数字完全相同则直接输出形如“X-X=0000”的表达式。
  • 代码实现
    n = [x for x in input("请输入一个 4 位整数:")]
    
    while len(n)<4:
        n.insert(0,'0')
    
    if n[0] == n[1] and n[1] == n[2] and n[2] == n[3]:
        print(n[0]*4,'-',n[0]*4,'= 0000',end='')
    
    else:
        while n!='6174':   
            a = sorted(n,reverse=True)
            b = sorted(n)
            a = a[0]+a[1]+a[2]+a[3]
            b = b[0]+b[1]+b[2]+b[3]
            n = int(a)-int(b)
            if n<1000:
                print(a,'-',b,'=','0'+str(n))
                n = '0'+str(n)
            else:
                print(a,'-',b,'=',n)
                n = str(n)

     

 

总结 

写在前面

第十题题目有较大的歧义,如果 n 不定且不含 0 的情况下,时间复杂度只有O(1),听起来有点搞笑……

(真正的总结)

这一张真的咕的太久了,当然也的确有一些难度,建议大家还是自己敲一下代码,真的会发现很多问题(woshicaiji)

 

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
Python中,试验设计库通常指的是SciPy库中的stats模块。该模块提供了许多用于试验设计和统计分析的函数和工具。通过使用stats模块,可以进行方差分析、t检验、卡方检验等常见的试验设计和统计分析操作。 然而,引用中提到的《Python程序设计实践教程》并未明确提到具体的试验设计库。根据引用的描述,可能是指作者自己编写的一些试验设计相关的库或代码。 因此,如果您想要了解更多关于Python中的试验设计库,我建议您参考SciPy库中的stats模块,或者搜索其他第三方库,如statsmodels等,以满足您的具体需求。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [python程序设计实践教程张莉答案-Python程序设计(2018年春).pdf](https://download.csdn.net/download/qq_43934844/87898408)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Python程序设计库](https://download.csdn.net/download/Karid/87924719)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Monty _Lee

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

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

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

打赏作者

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

抵扣说明:

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

余额充值