Python语言程序设计2018年版课后习题答案(全国计算机等级考试二级教程)嵩天著 您所在的位置:网站首页 python语言程序设计二级教程课后题答案 Python语言程序设计2018年版课后习题答案(全国计算机等级考试二级教程)嵩天著

Python语言程序设计2018年版课后习题答案(全国计算机等级考试二级教程)嵩天著

2024-05-16 00:59| 来源: 网络整理| 查看: 265

Python语言程序设计2018年版编程题(全国计算机等级考试二级教程)嵩天著

第二章 编程题

1.获得用户输入的一个整数N,计算并输出N的32次方。

num = eval(input("请输入整数N:")) print(num**32)

2.获得用户输入的一段文字,将这段文字进行垂直输出。

str = input() for i in str: print(i)

3.获得用户输入的一个合法算式,例如:1.2+3.4,输出运算结果。

这里写代码片

4.获得用户输入的一个小数,提取并输出其整数部分。

num=input("请输入一个小数:"); print(int(num))

5.下面这段代码能够获得用户输入的一个整数N,计算并输出1到N相加的和。然而,这段代码存在多个语法错误,请指出错误所在并纠正。

n=input("请输入整数N:"); sum=0 for i in range(n): sum+=i+1 print("1到N求和结果:".format(sum))

第三章 编程题 1.获得用户输入的一个整数,输出该整数百位及以上的数字。

x=input('请输入一个整数') x=int(x) if 0>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]100.00% def show_process(self, i=None): if i is not None: self.i = i else: self.i += 1 num_arrow = int(self.i * self.max_arrow / self.max_steps) #计算显示多少个'>' num_line = self.max_arrow - num_arrow #计算显示多少个'-' percent = self.i * 100.0 / self.max_steps #计算完成进度,格式为xx.xx% process_bar = '[' + '>' * num_arrow + '-' * num_line + ']'\ + '%.2f' % percent + '%' + '\r' #带输出的字符串,'\r'表示不换行回到最左边 sys.stdout.write(process_bar) #这两句打印字符到终端 sys.stdout.flush() if self.i >= self.max_steps: self.close() def close(self): print('') print(self.infoDone) self.i = 0 if __name__=='__main__': max_steps = 100 process_bar = ShowProcess(max_steps, 'OK') for i in range(max_steps): process_bar.show_process() time.sleep(0.01) 运行 按照主函数的方法调用此类即可,显示效果如下: [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]100.00% OK **其他案例** 使用 sys.stdout 或 sys.stderr 就可以输出一个简单的进度条: import time import sys def report_progress(progress, total, lbar_prefix = '', rbar_prefix=''): percent = round(progress / float(total) * 100) buf = "%s|%s| %s%d/%d %s"%(lbar_prefix, ('#' * percent).ljust(100, '-'), rbar_prefix, progress, float(total), "%d%%"%(percent)) sys.stdout.write(buf) sys.stdout.write('\r') sys.stdout.flush() def report_progress_done(): sys.stdout.write('\n') total = 100 report_progress(0, total) for progress in range(1, 101): time.sleep(0.1) report_progress(progress, total) report_progress_done() --------------------- 本文来自 亦游 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/tp7309/article/details/79408555?utm_source=copy

第四章 编程题 1.输入一个年份,输出是否为闰年。#闰年条件:能被4整除但不能被100整除,或者能被400整除的年份都是闰年。

y=input("请输入一个年份:") year=int(y) if year%4==0 and year%100!=0: print(year,"是闰年") elif year%400==0: print(year,"是闰年") else: print(year,"不是闰年")

2.最大公约数计算。获得两个整数,求出这两个整数的最大公约数和最小公倍数。最大公约数的计算一般使用辗转相除法(欧几里德算法),最小公倍数一般使用两个数的乘积除以最大公约数。

1. 求最小公倍数的算法: 最小公倍数 = 两个整数的乘积 / 最大公约数 所以我们首先要求出两个整数的最大公约数, 求两个数的最大公约数思路如下: 2. 求最大公约数算法: 1. 整数A对整数B进行取整, 余数用整数C来表示 举例: C = A % B 2. 如果C等于0,则C就是整数A和整数B的最大公约数 3. 如果C不等于0, 将B赋值给A, 将C赋值给B ,然后进行 1, 2 两步,直到余数为0, 则可以得知最大公约数 def fun(num1, num2): # 定义一个函数, 两个形参 if num1 < num2: # 判读两个整数的大小,目的为了将大的数作为除数,小的作为被除数 num1, num2 = num2, num1 # 如果if条件满足,则进行值的交换 vari1 = num1 * num2 # 计算出两个整数的乘积,方便后面计算最小公倍数 vari2 = num1 % num2 # 对2个整数进行取余数 while vari2 != 0: # 判断余数是否为0, 如果不为0,则进入循环 num1 = num2 # 重新进行赋值,进行下次计算 num2 = vari2 vari2 = num1 % num2 # 对重新赋值后的两个整数取余数 # 直到 vari2 等于0,得到最到公约数就退出循环 vari1 /= num2 # 得出最小公倍数 print("最大公约数为:%d" % num2) # 输出 print("最小公倍数为:%d" % vari1) # 输出 fun(6, 9) ---------- 欧几里德算法又称辗转相除法,用于计算两个整数m, n的最大公约数。其计算原理依赖于下面的定理: gcd(m, n) = gcd(n, m mod n) 这个定理的意思是:整数m、n的最大公约数等于n和m除以n的余数的最大公约数。 例如:有两个整数:120和45,我们按照上面的方法求他们的最大公约数。 1. gcd(120, 45) = gcd(45, 120 % 45) = gcd(45, 30) 2. gcd(45, 30) = gcd(30, 45 % 30) = gcd(30, 15) 3. gcd(30, 15) = gcd(15, 30 % 15) = gcd(15, 0) = 15 当 m % n 等于零时,即求15和0的最大公约数时,这个循环应该终止,15就是120和45的最大公约数。 Python代码实现如下: def gcd(m, n): while n: m, n = n, m % n return m

3.统计不同字符个数。用户从键盘键入一行字符,编写一个程序,统计并输出其中英文字符、数字、空格和其他字符的个数。

[原文链接](https://blog.csdn.net/htuhxf/article/details/79944051) 一、习题要求 统计不同字符个数。用户从键盘输入一行字符,编写一个程序,统计并输出其中英文字符、数字、空格和其他字符的个数。 **二、思路分析** 最重要的是找到一个标准,可以利用if语句把需要统计的字符区别开来。 显而易见,python3.X直接使用unicode这个特点,就可以利用, 第1步:确定unicode编码范围: 汉字: 十六进制 [0x4e00, 0x9fa5] / 十进制 [19968,40869] 数字:十六进制 [0x30, 0x39] / 十进制 [48, 57] 小写字母:十六进制 [0x61, 0x7a] / 十进制 [97,122] 大写字母:十六进制 [0x41, 0x5a] / 十进制 [65, 90], 注:chr(x) & ord(x)使用的是 单个字符,或者十进制INT格式的unicode编码; 第2步:保证输出结果只有一行 第3步:编写代码 **三、代码:** text = input('请输入字符:') # 界面:让用户输入字符 zhongwen=shuzi=yingwen=kongge=qita=0 # 设置初始值,以便用于for in循环 for i in text: if 40869 >= ord(i) >= 19968: # 本处使用十进制,简单。或者使用十六进制,再用ord('\u9fa5')转换为十进制的unicode编码; zhongwen +=1 elif 57 >= ord(i) >= 48: shuzi+=1 elif 122>= ord(str.lower(i)) >= 97: # 直接使用str.lower()函数,将英文字符统一为小写,节省代码; yingwen +=1 elif i ==' ': kongge +=1 else: qita +=1 print('中文字符个数为{}'.format(zhongwen),'\n'+'数字字符个数为{}'.format(shuzi),'\n'+'英文字符个数为{}'.format(yingwen),'\n'+'空格字符个数为{}'.format(kongge),'\n'+'其他字符个数为{}'.format(qita)) 注: - print()函数和for语句对齐后,输出结果仅仅是最后统计值,输出一次。 - 使用'\n'+'string'来使得输出结果换行; - python3.x 默认十进制。之前直接使用 十六进制的汉字编码,易出错,如‘u9fa5’会被当作string处理。

4.猜数字游戏续。当用户输入的不是整数(如字母、浮点数等)时,程序会终止执行退出。改编题目1中的程序,当用户输入出错时给出“输入内容必须是整数!”的提示,并让用户重新输入。

[原文链接](https://blog.csdn.net/TimeOld/article/details/79699874) import random secret = random.randint(0,9) #这里使用random()产生0~9之间整数 #print(secret) print('------猜数字游戏!-----') guess = -1 N = 0 #记录次数 while guess != secret: temp = input('请输入数字0--9之间:\n') if not temp.isdigit(): #判断输入的是否为非整数 print('输入内容必须为整数!!!!\n再来一次吧\n') else: N+=1 guess = int(temp) if guess > secret: print('遗憾,太大了!\n') if guess < secret: print('遗憾,太小了!\n') if guess == secret: print('预测{}次,你猜中了!'.format(N)) watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzE3NDYzOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) import random target=random.randint(1,1000) count=0 while True: try: guess=eval(input('请输入一个猜测的整数(1到1000):')) except: print('输入有误,请重试,不计入猜测次数哦!') continue count=count+1 if guess>target: print('猜大了') elif guess


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有