菜鸟教程Python3实例刷题 1-25
- 题目网址 https://www.runoob/python3/python3-examples.html
- 相比于网址中的参考答案,给出了更多的注释,以及发散想到的相关知识点,便于日后复习。
- 本篇记录了《第1题:Python Hello World 实例》 至 《第25题:Python 简单计算器实现》
1
print('hello world')
print("hello world")
2
num1 = input('输入第一个数字')
num2 = input('输入第二个数字')
# input() 返回一个字符串,所以我们需要使用 float() 方法将字符串转换为数字
sum = float(num1) + float(num2)
# 注意格式: ( "......".format() )
print('数字{0}和{1}相加的结果为:{2}'.format(num1,num2,sum))
#也可以两行合并成一行
print('两数之和为 %.1f' %(float ( input('输入第一个数字:') + input('输入第二个数字:') ) ) )
# input()就是返回一个字符串的值,字符串可以加加减减,然后我们转化
# float ( input('输入第一个数字:') + input('输入第二个数字:') )
# 百分号格式,百分号数值。
# print('两数之和为 %.1f' % (15.486764) )
3
# num = float(input('请输入一个字符'))
#
# num_sqrt = num**0.5
#
# print(' %.3f 的平方根近似是 %.3f' % (num,num_sqrt))
#
#考虑输入的可能是:1.1负数浮点数 1.2负数整数 2.1非负数浮点数 2.2非负数整数
#再全面一点可以考虑 long类型
#本题主要是回味一下:1.函数定义 2.if-else结构,还有elif 3.num.contains()函数 4.负数的开方
def mySqrt():
import cmath
num = input ("请输入一个数")
if num.__contains__('-'):
if num.__contains__('.'):
num_sqrt = cmath.sqrt(float(num))
print('{0} 的平方根为 {1:0.3f}+{2:0.3f}j'.format(float(num), num_sqrt.real, num_sqrt.imag))
else:
num_sqrt = cmath.sqrt(int(num))
print('{0} 的平方根为 {1:0.3f}+{2:0.3f}j'.format(int(num), num_sqrt.real, num_sqrt.imag))
else:
if num.__contains__('-'):
num_sqrt = float(num) ** 0.5
print(' %0.3f 的平方根为 %0.3f' % (float(num), num_sqrt))
else:
num_sqrt = int(num) ** 0.5
print(' %0.3f 的平方根为 %0.3f' % (int(num), num_sqrt))
4
# 二次方程式 ax**2 + bx + c = 0
# delta小于0也有解,是复数解
# a、b、c 用户提供,为实数,a ≠ 0
a = float( input('输入a:') )
b = float( input('输入b:') )
c = float( input('输入c:') )
# 因为要delta小于0时,也需要计算出复数解,所以我们需要导入 cmath(复杂数学运算) 模块
import cmath
delta = b**2 - 4*a*c
res1 = (-b + cmath.sqrt(delta))/(2*a)
res2 = (-b - cmath.sqrt(delta))/(2*a)
print("两个解分别是:{0} , {1}".format(res1,res2))
#学会用保留几位小数: {0:.3f},即:第0个数字保留3位小数
print("保留三位小数的两个解分别是:{0:.3f} , {1:.3f}".format(res1,res2))
5
a = float(input("输入第一条边"))
b = float(input("输入第二条边"))
c = float(input("输入第三条边"))
s = (a + b + c) / 2
area = (s * (s-a) * (s-b) * (s-c))
print("保留两位小数的面积为:%.2f" % area)
6
# 定义一个方法计算圆的面积,半径作为参数
import math
def calcu_circle(r):
pi = math.pi
s = pi*r*r
return s
# 在pirnt语句里包含:input,会先执行input,然后等一切都确定好后,再全部输出
r = float( input("输入半径值:") )
# 百分号% 配 百分号%
print("面积为 %.5f"%calcu_circle(r))
# {0} 配 format
print("面积为 {0:.5f}".format(calcu_circle(r)))
7
import random
print(random.randint(0,9))
### random.choice( seq ) # seq 可以是一个列表,元组或字符串。###
print ("从 range(100) 返回一个随机数 : ",random.choice(range(100)))
print ("从列表中 [1, 2, 3, 5, 9]) 返回一个随机元素 : ", random.choice([1, 2, 3, 5, 9]))
print ("从字符串中 'Runoob' 返回一个随机字符 : ", random.choice('Runoob'))
### random.randrange ([start,] stop [,step]) # stop是必须的参数,其他可以省略,[,)左闭右开 ###
print ("randrange(1,100, 2) : ", random.randrange(1, 100, 2))# 从 1-100 中选取一个奇数
print ("randrange(100) : ", random.randrange(100))# 从 0-99 选取一个随机数 默认从0开始
### random.random() ###
print ("random() : ", random.random())# 第一个随机数
print ("random() : ", random.random())# 第二个随机数
### random.seed ( [x] ) ###
### 我们调用 random.random() 生成随机数时,每一次生成的数都是随机的。但是,当我们预先使用 random.seed(x) 设定好种子之后,其中的 x 可以是任意数字,如10,这个时候,先调用它的情况下,使用 random() 生成的随机数将会是同一个。
import random
random.seed(10)
print(random.random()) # 第一次 seed + random。等于说,seed(10)和 这次random出来的值 定下了契约
print(random.random()) # 没有拿出令牌,随机的random值
random.seed(10)
print(random.random()) # 拿出令牌,且令牌是10,所以就拿出,第一次存储好的random值
random.seed(15)
print(random.random())
"""
0.5714025946899135
0.4288890546751146
0.5714025946899135
0.965242141552123
"""
### random.shuffle (lst) # lst 列表 ###
list = [20, 16, 10, 5];
random.shuffle(list)
print ("随机排序列表 : ", list)
random.shuffle(list)
print ("随机排序列表 : ", list)
"""
随机排序列表 : [20, 5, 16, 10]
随机排序列表 : [5, 20, 10, 16]
"""
### random.uniform(x, y) # x和y随便谁大谁小,结果可取x和y,结果返回的是float类型 ###
print ("uniform(5, 10) 的随机浮点数 : ", random.uniform(5, 10))
"""
uniform(5, 10) 的随机浮点数 : 7.054602800254241
"""
8
# 用户输入摄氏温度
celsius = float(input('输入摄氏温度: '))
# 计算华氏温度
fahrenheit = (celsius * 1.8) + 32
# 输出
print('%0.1f 摄氏温度转为华氏温度为 %0.1f ' % (celsius, fahrenheit))
print('{0:.1f} 摄氏度转化为华氏温度为 {1:.1f}'.format(celsius,fahrenheit))
9
def mySwap():
x = input("输入x值:")
y = input("输入y值:")
temp = x
x = y
y = temp
print("交换后的x值为: {0} , 交换后的y值为: {1}".format(x,y))
# 也可以不需要temp,直接:
# print("交换后的x值为: {0} , 交换后的y值为: {1}".format(y,x))
pass
mySwap()
10
def fun():
try:
num = float(input("please input a number: "))
if num > 0:
print("positive")
elif num < 0:
print("negtive")
else:
print("zero")
except ValueError:
print("invalid input ! please input again!")
fun()
# 注意:如果一直输入无效的数据,会使得递归过深,overflow
fun()
11
# 最核心点: float(str)能直接判断str是否是数字,如果不是,会报异常
def is_number(s):
# 如果是数字
try:
float(s)
return True
except ValueError:
pass
# 如果是其他语言的数字,比如 四 是可行的。但为什么 I II III IV V不行 ?
try:
import unicodedata
unicodedata.numeric(s)
return True
except (TypeError, ValueError):
return False
# 编译器可以识别出来 1e3 是数字,就相当于123456一样
print(is_number(1e3))
print(is_number('四'))
print(is_number('1'))
print(is_number('1.3'))
print(is_number('-1.37'))
print(is_number('1e3'))
print(is_number('foo'))
print(is_number('IV'))
12
def fun():
try:
num = float( input('输入一个数字: ') )
if num % 2 == 0:
print('是偶数 even')
else:
print('是奇数 odd')
except:
print("输入的不是数字, 请重新输入")
fun()
13
def isRN():
try:
year = int ( input('输入一个年份: ') )
if (year%400==0) or (year%4==0 and not(year%100==0)):
print("{0}是闰年".format(year))
else:
print("{0}不是闰年".format(year))
except:
print('请重新输入一个 正整数 年份! ')
isRN()
# 1.复习:闰年判断方法
# 2.在python里面,位运算 与& 或| 非~ 异或^
# 3.区分好Python中的 逻辑运算和 位运算
# if (year%400==0) or (year%4==0 and not(year%100==0)): 这么写是对的
# if (year%400==0) | (year%4==0 & ~(year%100==0)): 这么写是不对的!!!
isRN()
14
num = int(input('输入你要输入数字的个数: '))
i = 1
list = []
while i <= num:
print('输入第' + str(i) + '个数字: ') # 强制类型转换
temp = float(input())
list.append(temp)
i = i+1
print("这几个数中,最大的是: {0}".format(max(list)))
15
def isPrime():
num = int( input("请输入一个正整数: ") )
if num==1 or num%2==0:
print("{0}不是质数".format(num))
else:
import math
# range()函数的时候,参数必须是int类型,而 math.sqrt() 返回的是float类型
# range(2,9,1) 是遍历 2、3、4 ... 8 不会遍历 9 , 所以还得加上 1
list = range(2,int(math.sqrt(num))+1,1)
for x in list:
if num%x==0:
print("{0}不是质数".format(num))
return # 这个地方只能写return,不能写break
print("{0}是质数".format(num))
isPrime()
# 遍历
list = ['Google','MicroSoft','Apple','Alibaba']
for i in range(len(list)):
print(i,list[i])
16
# 输出指定范围内的素数
low = int(input('输入正整数下限: '))
high = int(input('输入正整数上限: '))
if low<1 or low>high:
print("输入信息不合法")
else:
for x in range(low, high + 1):
if x>1:
flag = 1
for i in range(2,x):
if x%i==0:
flag = 0
break
if flag==1:
print(x)
17
# 阶乘
# 规定0的阶乘是1,
num = int (input('输入一个整数: '))
if num<0:
print("输入不合法")
elif num==0:
print("0的阶乘是1")
else:
s = 1
for i in range(1,num+1):
s = s*i
print("{0}的阶乘是{1}".format(num,s))
18
# 九九乘法表
for i in range(1,10):
for j in range(1,i+1):
if i==j:
print("{0}×{1}={2}".format(i, j, i * j))
else:
print("{0}×{1}={2}".format(i, j, i * j), end='\t')
# print()中 end 表示输出完之后追加一个东西,默认end='\n',你也可以设置成''或者'\t'
# print("阿达",end='')
# print("ada",end='\t')
19
# 斐波那契数列
# 0 , 1 , 1 , 2 , 3 , 5 , 8 , 13 , 21
num = int( input("输入数列长度: ") )
def Fibo(num):
if num<1:
print("输入不合法")
elif num==1:
print("[0]")
elif num==2:
print("[0, 1]")
else:
list = [0,1]
i = 0
while i<num-2:
temp = list[i] + list[i+1]
list.append(temp)
i= i+1
print(list)
Fibo(num)
20
# 如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。
# 例如1^3 + 5^3 + 3^3 = 153。
# 1000以内的阿姆斯特朗数: 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407。
# 以下代码用于检测用户输入的数字是否为阿姆斯特朗数:
num = int(input("输入一个正整数: "))
str_num = str(num)
len = len(str_num)
sum = 0
# for i in range(0,len):
# print(str_num[i])
# print(type(str_num))
for i in range(0,len):
temp = int(str_num[i])
sum = sum + (temp**3)
if sum==num:
print(str_num + ' 是 阿姆斯特朗数')
else:
print(str_num + '不是 阿姆斯特朗数')
21
# 获取用户输入十进制数
# 转换为其他进制
dec = int(input("输入数字:"))
print("十进制数为:", dec)
print("转换为二进制为:", bin(dec))
print("转换为八进制为:", oct(dec))
print("转换为十六进制为:", hex(dec))
22
# 字符和ASCII码的互相转换
c = input("请输入一个字符: ")
print(c + " 的ASCII 码为", ord(c))
a = int(input("请输入一个ASCII码: "))
print(a, " 对应的字符为", chr(a))
23
# 函数返回两个数的最大公约数
def fun(x, y):
ans = 1
# 获取最小值
smaller = min(x,y)
# 从1到smaller, 找出 x和y都能被整除的 最大除数
for i in range(1, smaller + 1):
if ((x % i == 0) and (y % i == 0)):
ans = i
# 返回结果
return ans
num1 = int(input("输入第一个数字: "))
num2 = int(input("输入第二个数字: "))
# 输出结果时: 数字 和 字符串 之间可以用 , 连接
print(num1, "和", num2, "的最大公约数为", fun(num1, num2))
24
# 两个数的最小公倍数
def fun(x,y):
# 找出更大的那个数
bigger = max(x,y)
# 找出两个数中的最小公倍数
ans = bigger
while True:
if ans%x==0 and ans%y==0:
print(x,"和",y,"的最小公倍数是: ",ans)
break
else:
ans += bigger
num1 = int(input("输入第一个数: "))
num2 = int(input("输入第二个数: "))
fun(num1,num2)
25
def add(x, y):
return x + y
def subtract(x, y):
return x - y
def multiply(x, y):
return x * y
def divide(x, y):
return x / y
def calculator():
# 用户输入
print("选择运算:")
print("1、相加")
print("2、相减")
print("3、相乘")
print("4、相除")
choice = input("输入你的选择(1/2/3/4):")
num1 = int(input("输入第一个数字: "))
num2 = int(input("输入第二个数字: "))
if choice == '1':
print(num1, "+", num2, "=", add(num1, num2))
elif choice == '2':
print(num1, "-", num2, "=", subtract(num1, num2))
elif choice == '3':
print(num1, "*", num2, "=", multiply(num1, num2))
elif choice == '4':
print(num1, "/", num2, "=", divide(num1, num2))
else:
print("非法输入")
# 调用函数
calculator()
更多推荐
Python编程练习:菜鸟教程Python3实例刷题一
发布评论