全国计算机等级考试(2019年版python)用自己的思路编写课后习题代码(1-5章)

寒假这段时间除了要做一些别的课程项目,同时也在温习python方面的基础知识,19年暑假自学了一个多月的python,后续时间和精力都没有太多就没有好好学了,借着寒假这段时间把全国计算机等级考试python二级的课后习题用自己的思路给编了一遍,如果不出意外自己会参加2020年的python二级全国等级考试,希望一帆风顺吧哈哈哈。
下面把一到五章的代码给大家贴出来,欢迎参考与批评指正。

第一章 程序设计基本方法

#1 根据用户输入的内容输出相应的结果

name = input("请输入对方的名字:")
str= input("请输入悄悄话的内容:")
print("{} 请听我说句悄悄话:{}".format(name,str))

#2 九乘九乘法表输出。工整打印常用的九九乘法表

for i in range(1,10):
    for j in range(1, i+1):
        print(" {}*{} = {:2} ".format(j,i,i*j),end = '')
    print('')  # 不明白这里为什么一定要加一个这个在这里作为每一行的换行操作,如果不加这个会挤到一块,也可用('\t')

#3 同切圆的绘制

import turtle
turtle.pensize(3)
turtle.circle(20)  # 绘制半径为10像素的圆
turtle.circle(40)  # 绘制半径为20像素的圆
turtle.circle(80)  # 绘制半径为40像素的圆
turtle.circle(160) # 绘制半径为80像素的圆

#4 系统循环提示输入三个小爱好并一起输出

hobbies = ''
for i in range(3):
    h = input("请输入您的小爱好(最多三个,按Q或者q结束):")
    if h.upper() == 'Q':
        break

    hobbies += h + ' '
print("您的小爱好是:{}".format(hobbies))

第二章 Python语言基本语法元素

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

N = int(input("请输入一个整数:"))  # 或者采用N = eval(input("请输入一个整数:"))
n = 32
sum = 1
while n > 0:
    sum = sum * N
    n = n - 1
print(sum)

# 或者采用一种比较投机的方式直接可以得出答案
print(N**32)

#2 获取用户输入的一段文字,将这段文字垂直输出

list = input("请您输入一段文字:")
for i in list:
    print(i)

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

N = eval(input("请您输入一个合法的算式,例如:1.2+3.4,运算结果为:"))  # 关键是要去掉那个引号
print(N)

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

N = input("请您输入一个小数:")   # 此题不可以直接使用eval(input()) 或者float(input()),因为这样得出的数字并不是可以迭代的,谨记
for i in N:
    if i != '.':
        print(i,end = '')
    else:
        break
# 或者使用python的内置函数round()方法可以直接一步到位(print(round(N)))

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

n = int(input("请输入整数N:"))
sum  =  0
for i in range(1,n+1):  # n的值一定要先加一才可以,可以自己建一个测试文件测试一下,方便观察
    sum += i
print("1到N求和结果:{}".format(sum))

第三章 基本数据类型

#1 获得用户输入的一个整数,输出该整数百味及以上的数字

int_number = int(input("请输入一个整数:"))
num = int_number // 100
print(round(num))

#2 获得用户输入的一个字符串,将字符串按照空格分隔,然后逐行打印出来

L_char = input("请输入一个字符串:")
L_char = L_char.split(' ')
for i in L_char:
    print(i)

#3 程序读入一个表示星期几的数字(1——7),输出对应的星期字符串名称。例如输入3返回星期三。

N = eval(input("请输入一个数字(1——7):"))
week_list = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']
print(week_list[N - 1])

#4 设n是一任意自然数,如果n的各位数字反向排列所得自然数与n相等,则n被称为回文数。从键盘输入一个5位数字,请编写程序判断这个数字是不是回文数?

n = input("请输入一个数字:")
L = len(n)
s = 0
for i in range(L):
    if n[i] == n[-i-1]:
        s = s + 1
        if s == L:
            print("是回文数")
        else:
            continue
    else:
        print("不是回文数")
        break
# 本题还有更加简单的写法,请大家自行尝试

#5 输入一个十进制整数,分别输出其二进制、八进制、十六进制字符串

N = eval(input("请输入一个十进制的整数:"))
print("{1} 的二进制是 :{0:b} ,八进制是 :{0:o},十六进制是 :{0:x}".format(N,N))  
# 这里面需要注意的一点就是给的参数和实际的参数并不一致应该怎样化解的问题

第四章 程序控制结构

#1 输入一个年份输出是否为闰年。闰年的条件,能被4整除但是不能被100整除,或者能被400整除的年份都是闰年。

try:
    year = eval(input("请输入一个年份:"))
    if type(year) == type(100):   # 此处为判断用户输入的是不是整数,100也可以为其他整数
        if year % 4 == 0:
            if year % 400 == 0 or year % 100 != 0:
                print("这个数 {} 是闰年".format(year))
            else:
                print("这个数 {} 不是闰年".format(year))
        else:
            print("这个数 {} 不是闰年".format(year))

except:
    print("您输入的并不是整数,请重新输入!")

#2 最大公约数计算

num1 = eval(input("请输入第一个数字:"))
num2 = eval(input("请输入第二个数字:"))
if num2 >= num1:  # 确保最大的那个数在前面
    num1,num2 = num2,num1
else:
    pass
while num1 % num2 :    # 辗转相除法
    temp = num1 % num2
    num1 = num2
    num2 = temp  # 最后算出来的num2就是最大公约数
print("最大公约数是 {} ".format(num2))

#3 最小公倍数计算

num1 = eval(input("请输入第一个数字:"))
num2 = eval(input("请输入第二个数字:"))
def lcm(num1,num2):
    last_small = max(num1,num2)
    while True:
        if (last_small % num1) == 0 and (last_small % num2) == 0:
            return last_small
            break
        last_small += 1
print("最小公倍数是 {} ".format(lcm(num1,num2)))

#4 统计不同字符个数。

'''
用户从键盘输入一行字符,编写一个程序,统计并输出其中英文字符、数字、空格和其他字符的个数
'''
L_char = input("请您输入一串字符:")
counter1,counter2,counter3,counter4 = 0,0,0,0
for c in L_char:
    if ('a' <= c <= 'z') or ('A' <= c <= 'Z') :
        counter1 += 1
    elif ('0' <= c <= '9'):
        counter2 += 1
    elif (c == ' '):
        counter3 += 1
    else:
        counter4 += 1
print("其中英文字符 {} 个、数字 {} 个、空格 {} 个,其他字符 {} 个".format(counter1,counter2,counter3,counter4))

#5 猜数游戏续。

'''
当用户输入的不是整数时(如字母、浮点数)程序会终止执行并退出。改编题目1的程序,
用户输入出错时给出“输入内容必须为整数的提示”,并让用户重新输入
'''
import random
target = random.randint(1,1000)
count = 0
while True:
    try:
        guess = eval(input('请输入猜测的整数(1-1000):'))
        count += 1
        if guess > target:
            print("猜大了!")
        elif guess < target:
            print("猜小了!")
        else:
            print("猜对了!")
            break
    except:
        print("输入内容必须为整数")
        continue
print("此轮猜测次数为:",count)

#6 羊车门问题

'''
有三扇关闭的门,一扇门后面停着汽车,其余门后是山羊,只有主持人知道每扇门后面是什么。参赛者可以选择一扇门,
在开启它之前,主持人会开启另外一扇门,露出门后的山羊,然后允许参赛者更换自己的选择。
请问参赛者更换选择后能否增加猜中汽车你的机会?——这是一个经典的问题。请使用random库对这个随机事件
进行预测,分别输出参赛者改变选择和坚持选择获胜的概率。
'''
import random
reference = 10000  # 作为参考,基数选择越大越接近实际情况,类似于古代抛硬币实验
guess_right_pro   = 0
guess_change_pro  = 0

for i in range(1,1+reference):
    guess = random.randint(1, 3)
    real  = random.randint(1, 3)
    if guess == real:
        guess_right_pro  += 1
    else:
        guess_change_pro += 1

print("不改变选择可以得到汽车的概率是:{} ".format(guess_right_pro / reference))
print("改变选择可以得到汽车的概率是:{} ".format(guess_change_pro / reference))
if guess_right_pro > guess_change_pro:
    print("参赛者更换选择后可以增加猜中汽车的机会!")
else:
    print("参赛者更换选择后不可以增加猜中汽车的机会!")

第五章 函数和代码复用

#1 实现isNum()函数,参数为一个字符串,如果这个字符串属于整数、浮点数或者复数表示,则返回True,否则返回False

def isNum(string):
        if isinstance(eval(string),int) or isinstance(eval(string),float) or isinstance(eval(string),complex):
            return True
        else:
            return False
try:
    string = input("请输入一个字符串:")
    print(isNum(string))
except:
    print("你输入的不是合法的字符串,请重新输入!")

#2 实现isPrime()函数,参数为整数,要有异常处理。如果整数是质数则返回True,否则返回False

def isPrime(num):
        for i in range(2,num):  #判断是不是质数
            if num % i == 0:
                return False
        return True

while True:    # 循环异常判断
    try:
        num = eval(input("请输入一个整数:"))
        print(isPrime(num))
        break
    except:
        print("你输入的不是整数!")
        continue

#3 编写一个函数计算传入字符串中数字、字母、空格一个其他字符的个数

def string_num(L_char):
    counter1,counter2,counter3,counter4 = 0,0,0,0
    for c in L_char:
        if ('a' <= c <= 'z') or ('A' <= c <= 'Z') :
            counter1 += 1
        elif ('0' <= c <= '9'):
            counter2 += 1
        elif (c == ' '):
            counter3 += 1
        else:
            counter4 += 1
    print("其中英文字符 {} 个、数字 {} 个、空格 {} 个,其他字符 {} 个".format(counter1,counter2,counter3,counter4))

L_char = input("请您输入一串字符:")
string_num(L_char)

#4 编写一个函数,打印200以内的所有素数,以空格分隔

def print_prime_200():
    for i in range(1,201):
        for j in range(2,i):
            if i % j == 0:
                break
        else:  # 这个地方不可直接使用print(i,end =' '),否则会把所有数字直接打印出来
            print(i,end=' ')  # 使用else语句是因为,else只有在前面的for()语句执行完后才会执行else语句,要注意这种先后关系
print_prime_200()

#5 编写一个函数,参数为一个整数n。利用递归获取斐波拉契数列中的第n个数,并返回。

def feibo(n):
    if n <= 2:
        return 1
    else:
        return feibo(n-1) + feibo(n-2)  # 不断利用递归进行加一计算
n = eval(input("请输入一个整数n:"))
print(feibo(n))
如果发现代码有问题,欢迎与我交流和讨论,不胜感激。
剩下章节自己实现的代码有时间写我也会尽快发出来的。

全国计算机等级考试(2019年版python)用自己的思路编写课后习题代码(6-8章)

全国计算机等级考试(2019年版python)用自己的思路编写课后习题代码(9-10章)

  • 9
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值