zl程序教程

您现在的位置是:首页 >  Python

当前栏目

python练习题参考答案来啦(2)

2023-04-18 16:27:19 时间

前面发了几篇python基础语法题目,主要用来帮助测试基础知识掌握的情况。

python基础语法很OK?做几题测试一下

python基础语法很OK?做几题测试一下(2)

python解决能力很OK?做几题测试一下(3)

昨天放了第三篇的参考答案,仅供参考,想要学的更深入一些可以自己看一些算法类的书籍或者文章,应该会更系统和专业。

python练习题参考答案来了(超多代码),看一下?(1)

今天放上第一篇的答案,如果掌握了基础语法的就可以跳过了,刚开始学的可以看看,仅供参考。

1.打招呼

输入你的名称,电脑会和你打招呼。比如输入叶子,会说你好叶子。

主要考察输入,输出语句。

name = input("请输入你的名字:")
print("你好,",name)

2.矩形的周长和面积

输入矩形的长和宽,输出周长和面积。

考察输入输出,数据类型以及转换,算术运算符

width = input("请输入宽度:")
height = input("请输入长度:")
c = (int(width) + int(height))*2
s = int(width) * int(height)
print("周长:",c)
print("面积:",s)

3.账号密码判断

这里假设正确的账号是yezi,密码是123456:如果输入正确提示登录成功,否则提示用户名或者密码有误,请重新输入。

主要考察分支语句,(了解单分支,双分支,多分支,嵌套分支的应用)

# 假设用户名为 yezi,密码为 123456
name = input("请输入用户名:")
password = input("请输入密码:")

if name == "yezi" and password=="123456":
    print("登入成功")
else:
    print("用户名或者密码有误,请重新输入")

4.限次数登录(有点难度)

超过3次,提示锁定,并且退出程序。

3次以内输入正确,提示登入成功,并且退出程序。

考察条件循环,循环分支嵌套,while else 结构,属于综合性比较强的一个例子。

count = 0
while (count < 3):
    name = input('请输入你的账号:')
    password = input('请输入你的密码:')
    if name =="yezi" and password == '123456':
        print('你的账号是:', name, '你的密码是:', password)
        print('登入成功,欢迎来到叶子陪你玩')
        break
    else:
        count = (count + 1)
        print('密码错误,还有', (3 - count), '次机会')
else:
    print(count, '次输入错误,密码已被锁定')

5.九九乘法表

看上去比较简单,时间初学者还是有一定难度的,主要考察嵌套循环以及循环变量的灵活应用,这里还加了一个字符串格式化。

# 99乘法表
for i in range(1,10):
  for j in range(1,i+1):
      print(f"{i}*{j}={i*j:2}",end=" ")
  print() # 换行

6.输出倒三角形字符

输入倒三角形的大小,输出字符倒三角形(数字不定)

7.输出字符三角形

输出字符三角形,效果如下:

每行字符数量按照 1,3,5,7的规律

同上,会更加灵活一些,难度也略高一些。

# for循环嵌套:输入倒三角形的大小,输出字符倒三角形
n=int(input(" 请输入一个数字:"))
for i in range(n):
    for j in range(n):
       if j<i: # 倒三角输出,故此处判断条件为 j<i  ;若为正三角,则j>i
           print(' ',end='')
       else:
           print('*',end='') 
    print()  # 换行

8.打印斐波那契数列前n项。

理解斐波那契数列的原理,就不难,不过这个案例非常经典,可以用来学习很多其它的内容。

#while循环实现生成前n项
a=0
b=1
count=int(input("查看的斐波那契数列前几项:"))
i = 0
while i < count:
    print(b,end=" ")
    c=a   # c是中间变量
    a=b
    b=c+b
    i+=1
print("
")

比如查看斐波那契数列第几项问题的三种解法:

1.递归写法:

存在冗余计算,到39后面,计算时间越来越长。

n = int(input("输入一个数:"))
def fib(n):
    if n==1 or n==2:
        return 1
    else:
        return fib(n-1)+fib(n-2)
fib(n)

2.递推写法:

一般建议采用"递归思想"思考分析问题,但是采用"递推方法"去实现。

n = int(input("输入一个数:"))
num1 = 1
num2 = 1
def fib(n):
    if n==1 or n==2:
        result = 1
    elif n>2:
        for i in range(n-2):
            result = num1 + num2
            num1 = num2
            num2 = result
    return result
print(fib(n))   

3.递归结合记忆字典或者列表。

算过的结果记录下来,这样计算的速度也会非常快。

#斐波那契的递归函数,n表示数列的第n项
memo={1:1,2:1}
def fib2(n):
    if n not in memo:
        memo[n]=fib2(n-1)+fib2(n-2)
    return memo[n]
print(fib2(12))

9.猜数字游戏

综合应用,结合随机库实现猜数游戏,如果你正在学习其它编程语言,试着实现这个经典程序,如果能够搞定,那么新语言的基本语法基本没问题了。

import random

min_num = 0   #random.randint(0,50)
max_num = 100 #random.randint(200,300)
answer = random.randint(min_num,max_num)
guess_num = -1
guess_time = 7

print("猜数字")
while guess_num != answer:
    print("还剩",guess_time,"次")
    if guess_time == 0:
        print("很遗憾,没猜对!")
        break
    print(min_num, "<= ? <=", max_num)
    guess_num = int(input("请输入猜想的数字:"))
    if guess_num > max_num or guess_num < min_num:
        print("注意范围")
        continue

    if guess_num == answer:
        print("恭喜你,猜对了")
    
    elif guess_num > answer:
        max_num = guess_num
    else:
        min_num = guess_num

    guess_time -= 1
    print()

10.智能算法出题器

综合应用,结合时间库和随机库,虽然看上去很简单,但是作为一个基础练习题,相对来说还是很ok的。

import random  # 导入随机库
import time  # 导入时间库

print("欢迎使用叶子加法智能出题器")
#设定范围
x = int(input("请输入你想挑战的加数范围,例如:0-100(输入100)"))
print("您已经选择0-", x, "的范围")
print("挑战马上开始,请在5秒内作答")

#答题
score = 0# 得分
while True:
    print()
    #出题
    a = random.randint(0, x)
    b = random.randint(0, x)

    prompt = str(a)+"+"+str(b)+"=?"
    print(prompt)

    start_time = time.time()
    answer = int(input("请输入你的答案:"))  # 获得答案
    end_time = time.time()

    if end_time-start_time >= 5:
        print('对不起,您已超时')
        break
    else:
        if answer == a + b:  # 判断是否回答正确
            print("回答正确")
            score = score+1
        else:
            print("回答错误")
            break
        
#称号判断
title = ""
if score >= 2:
    title = "白银"
elif score >= 4:
    title = "黄金"
elif score >= 8:
    title = "王者"
else:
    title = "青铜"

print("获得的称号是:", title)# 打印出获得的称号