Python编程练习:菜鸟教程Python3实例刷题一

菜鸟教程Python3实例刷题 1-25

  • 题目网址 https://www.runoob.com/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()

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值