python常见习题及解析

题目来源:王道训练营入学作业

以下为个人解析,旨在学习掌握python基础内容,如有问题希望各位大佬指正

1、打印输出hello world字符串

print("hello world")

2、数字求和,读取两个数字,输出它们的和

num_one=input("第一个数字:")
num_two=input("第二个数字:")
# 传进来的数转为浮点型,直接相加
sum=float(num_one)+float(num_two)
print("总和为:",sum)

常见问题:input()函数输出为字符串类型,需要转化为浮点型进行相加

3、平方根,读取一个数字,输出它的平方根

import math
num = float(input("请输入数字:"))
# 注意输入数转为浮点型或整型
while num<0:
    print("请输入大于等于0的值:")
    num = float(input("请输入数字:"))
# 负数异常判断
result=math.sqrt(num)
# 导入math库函数
print(result)

常见问题:input()函数未转为浮点型进行后续运算;调用sqrt()函数需要导入math库;未进行负数异常判断(使用try判断异常也是可以的)

4、一元二次方程,对于y=3*x*x+5*x+6,读取一个x,求得y的值

x=float(input("请输入x的值:"))
y=3*x*x+5*x+6
print(y)

常见问题:input()函数未转为浮点型进行后续运算

5、计算三角形的面积,读取三角形的三条边(如果不能构成,输出不合法),输出三角形面积

import math
# 输入三条边的数值
a=float(input('请输入第一条边:'))
b=float(input('请输入第二条边:'))
c=float(input('请输入第三条边:'))
# 判断是否能构成三角形
if a>0 and b>0 and c>0:
    print("输入的均为正数")
else:
    print("重新输入:")
    a = float(input('请输入第一条边:'))
    b = float(input('请输入第二条边:'))
    c = float(input('请输入第三条边:'))
if a+b>c and a+c>b and b+c>a:
    print("可以构成三角形")
else:
    print("重新输入:")
    a = float(input('请输入第一条边:'))
    b = float(input('请输入第二条边:'))
    c = float(input('请输入第三条边:'))
# 计算面积
p=(a+b+c)/2
s=math.sqrt(p*(p-a)*(p-b)*(p-c))
print("三角形的面积为:",s)

常见问题:在计算面积前要判断是否为正数,符合构成三角形的条件(如果不判断,后面海伦公式中可能为负,会报错)

6、计算圆的面积,读取圆的半径,输出面积

import math
pi=math.pi
def circle_area():
    r=float(input("请输入圆的半径:"))
    s=pi*r*r
    print("所求圆面积为:{:.2f}".format(s))

circle_area()

常见问题:pi值可直接从math库中调取;format()函数可以将任何类型数据转化为字符串

7、随机数生成,随机生成[0,100]内的10个数,打印输出

import random
a = random.randint(0, 100)
print(a)
# 生成一个随机数
b = random.random()
print(b)
# 生成一个0到1之间的浮点数
c = random.uniform(0, 100)
print(c)
# 生成一个浮点数
d = random.choice([1, 2, 3, 4, 5])
# 从列表之间随机选取一个数
print(d)

常见问题:

  1. random.randint(a,b) a,b为整型且范围为左闭右闭区间

  1. random.random() 无需参数,且生成的数在0到1之间且为浮点数

  1. random.uniform(a, b) a,b为浮点型且范围为左闭右闭区间

  1. random.choice([1, 2, 3, 4, 5]) 从所给列表中随机选一个数

8、打印倒三角形

****

***

**

*

for i in range(4,0,-1):
    for j in range(i,0,-1):
        print("*",end=" ")
    print("")

常见问题:

  1. for i in range()循环第二个参数取不到最后值,即使跳出循环也取不到

  1. 内层循环控制*的个数,防止换行要加end=" "

  1. 外层循环需要换行

9、交换两个变量a和b的值

def swap1(a, b):
    temp = a
    a = b
    b = temp
    
def swap2(a, b):
    a, b = b, a

def swap3(a, b):
    a = a ^ b
    b = a ^ b
    a = a ^ b

常见问题:

  1. 方法一常见,利用临时变量。将a的值赋给temp,再将b的值传给a,最后将temp中原来保存的a 的值赋给b

  1. 方法二利用python中的语法,直接将a,b转换

  1. 方法三利用异或,一个数与自身异或,结果为0;一个数与0异或,结果为其本身;一个数与另一个数异或两次,结果为其本身。将a^b的值赋给a,再将a^b的结果与b异或,最后的值为a,赋给b。最后a^b的结果与得到原本a的值的b异或,最后得到b的值给a

10、读取标准输入得到变量a,如果a大于0同时小于10,输出 正确,否则 输出错误

a = float(input("请输入一个数:"))
if a > 0 and a < 10:
    print("正确")
else:
    print('错误')

常见问题:输入的数为字符串,需要转化为浮点型或者整型

11、读取字符串,判断是否为数字,是数字,输出 正确,否则输出 错误

def isscalar(str):
    try:
        float(str)
    except ValueError:
        print("您输入的不是纯字符串")
    else:
        print("输入的是纯字符串")


str = input("请输入测试内容:")
isscalar(str)

常见问题:用异常判断是否为数字

12、判断奇数偶数,读取输入,判断是奇数则输出奇数,判断是偶数则输出偶数

num = float(input("请输入数字:"))
temp = num % 2
if temp == 0:
    print("偶数")
else:
    print("奇数")

13、判断闰年,读取输入,判断如果是闰年,输出闰年,不是,输出平年

num = float(input("请输入年份:"))
if (num % 4 == 0 and num % 100 != 0) or num % 400 == 0:
    print("是闰年")
else:
    print("不是闰年")

常见问题:用短路命令实现,一句if语句即可

14、读取两个数a和b,输出a和b中较大的

a = float(input("输入一个数:"))
b = float(input("输入一个数:"))
if a > b:
    print(a)
else:
    print(b)

15、读取输入,判断是否为质数,是的话输出 质数,不是的话输出 非质数

num = int(input("请输入一个整数:"))

for i in range(2, num):
    temp = num % i
    if temp == 0:
        print("非质数")
        break
else:
    print("质数")

16、输出[0,100]内的素数

for num in range(2, 101):
    for j in range(2, num):
        if (num % j) == 0:
            break
    else:
        print(num, end=" ")

常见问题:只需要对上一题的代码做一些修改,else条件改为输出素数,增加外层循环遍历数据即可

17、读取一个数字,输出对应数字的阶乘结果

def getfactorial(num):
    temp = 1
    if num <= 0:
        print("没有阶乘")
    else:
        while num > 0:
            temp = temp * num
            num -= 1
    return temp

num = int(input("请输入一个数字"))
print("该数字的阶乘值为:", getfactorial(num))

常见问题:利用while循环实现

18、打印输出九九乘法表

for i in range(1, 10):
    for j in range(1, i + 1):
        print(i, "*", j, "=", i * j, end=" ")
    print()

常见问题:注意输出格式

19、读取一个数,输出从1到这个数之间的斐波那契数列

def fib1(n):
    a, b = 0, 1
    for i in range(n):
        a, b = b, a + b
        print(a, end=" ")

num = int(input("请输入需要几项:"))
fib1(num)

利用循环迭代实现

def fib2(n):
    list = []
    i = 0
    while i < n:
        if i == 0 or i == 1:
            list.append(1)
        else:
            list.append(list[i - 2] + list[i - 1])
        i += 1

    print(list)


num = int(input("请输入需要几项:"))
fib2(num)

20、读取一个数,判断是否为阿姆斯特朗数(如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数)

num = int(input("请输入想验证的数:"))
k = 0
n = len(str(num))
temp = num
while temp > 0:
    kk = temp % 10  # 求出个位数字
    k += kk ** n  # 当前位数n方和相加
    temp //= 10  # 排除已经计算的位数
if num == k:
    print("是阿姆斯特朗数")
else:
    print("不是阿姆斯特朗数")

常见问题:求输入数字的位数,需要先转化为字符串格式再求长度

21、读取一个数,分别输出二进制、八进制、十六进制

def getchange(num):
    num1 = bin(num)[2:]  # [2:]去掉前缀
    num2 = oct(num)[2:]
    num3 = hex(num)[2:]
    print(num1, num2, num3)


num = int(input("请输入想转换的数:"))
getchange(num)

22、读取一个字符,输出ASCII值,读取一个ASCII码,输出对应字符

def exchange(num):
    try:
        int(num)
    except ValueError:
        num1=ord(num)    #返回数字
        print(num1)
    else:
        num1=chr(int(num))  #返回字符串
        print(num1)

num=input("请输入想转换的内容:")
exchange(num)

通过异常处理

num = input("请输入想转换的内容:")

def exchange2(num):
    if isinstance(int(num),int):
        num1=chr(int(num))
        print("num1:",num1)
    else:
        num2=ord(num)
        print("num2",num2)

exchange2(num)

也可以利用isinstance()函数判断,注意传入的参数应该提前变为整型

23、读取两个数,输出其最大公约数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值