题目来源:王道训练营入学作业
以下为个人解析,旨在学习掌握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)
常见问题:
random.randint(a,b) a,b为整型且范围为左闭右闭区间
random.random() 无需参数,且生成的数在0到1之间且为浮点数
random.uniform(a, b) a,b为浮点型且范围为左闭右闭区间
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("")
常见问题:
for i in range()循环第二个参数取不到最后值,即使跳出循环也取不到
内层循环控制*的个数,防止换行要加end=" "
外层循环需要换行
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
常见问题:
方法一常见,利用临时变量。将a的值赋给temp,再将b的值传给a,最后将temp中原来保存的a 的值赋给b
方法二利用python中的语法,直接将a,b转换
方法三利用异或,一个数与自身异或,结果为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、读取两个数,输出其最大公约数