学习Python的第二天

学习Python的第二天

补充

不好意思,昨天忘记把课后习题加进去了,在这里补充

  • 输入圆的半径,计算圆的周长和面积

  • 英制单位转换公制单位,英寸和厘米转换

    题目讲解

    #第一题
    #导入包
    import math
    r = float(input('请输入圆的半径'))
    #带入公式
    perimeter = 2 * r * math.pi
    area = math.pi * r ** 2
    #输入格式
    print(f'圆的周长为{perimeter:.4f}')
    print(f'圆的面积为{area:.4f}')
    
    
    第二题
    
    x = float(input('请输入长度(英寸)'))
    #带入转换公式
    print(f'{x}英寸 = {2.54 * x}厘米')
    
    

    分支结构

    要么。。。。。

    要么。。。。。

    选择 其中满足的一个要求执行

    if 条件:

    else:

    # 运行登录系统,输入用户ID,和密码登录系统
    #当ID和密码正确则登录成功,反之登录失败
    username = input('请输入用户名')
    password = input('请输入密码')
    if username == 'admin' and password == 'admin123':
        print('登录成功,欢迎使用xxx系统')
        pass
    else:
        print('登录失败,用户名或密码错误')
        pass
    print('程序结束,再见')
    
    #以上代码存在一个问题,输入密码时不是掩码,所以需要导入一个包进行修改,可以暂时不理解包的作用,用就对了
    import getpass
    username = input('请输入用户名')
    password = getpass.getpass('请输入密码')
    if username == 'admin' and password == 'admin123':
        print('登录成功,欢迎使用xxx系统')
        pass
    else:
        print('登录失败,用户名或密码错误')
        pass
    print('程序结束,再见')
    

    进一步联系分段函数-多分枝

    分段函数求值

    分枝再多也只执行一个

    格式

    if条件:

    elif条件:

    elif条件:

    elif条件:

    elif条件:

    else:

    注意:代码块:保持相同缩进的代码就属于同一个代码块

    求分段函数

f ( x ) = { 3 x − 5 , x > 1 x + 2 , − 1 ≤ x ≤ 1 5 x + 3 , x < − 1 f(x) = \begin{cases}3x - 5, &x \gt 1 \\ x + 2, &-1 \le x \le 1 \\5x + 3, & x \lt-1\end{cases} f(x)=3x5,x+2,5x+3,x>11x1x<1

x = float(input('x = '))
if x > 1:
    y = 3 * x - 5
    pass
#多分枝运算
elif -1 <= x <= 1:
    y = x + 2
    pass
else:
    y = 5 * x + 3
    pass
print(f'f(x) = {y}')

循环结构

for-in循环

结构

for i in range(0, n)n次循环

for i in range(m, n)m-n次循环

练习如下

for i in range(05):
    print('hello, word')
print('人生苦短, 我用python')

for i in range(1, 15, 2):#隔2循环一次
    print('hello, word')
print('人生苦短, 我用python')

for i in range(1, 28, 5):#隔5循环一次
    print('hello, word')
print('人生苦短, 我用python')
for i in range(1, 15, -1):#反向循环
    print('hello, word')
print('人生苦短, 我用python')
# 不在循环缩进内的代码不循环
加深练习

累加

count = 0
for i in range(0, 101):#1到100累加,101为开区间
    count += i
print(count)

count = 0
for i in range(0, 101, 2):#1到100,奇数相加
    count += i
print(count)

count = 0
for i in range(2, 101, 2):#1到100偶数相加
    count += i
print(count)

再次练习

1到100三的倍数或5的倍数的数进行累加,加上之前所学的分支结构

count = 0
for i in range(1, 101):
    if i % 3 == 0 or i % 5 == 0:
        count += i
        pass
    else:
        pass
print(count)

指定一个数进行阶乘

和累加结构基本相同

count = 1
n = int(input('请输入一个非负整数 '))
for i in range(1, n+1):
    count *= i
print(f'{n}! = {count}')

求最大公约数

此处用到一个数学公式:欧基原理

x = int(input('x = '))
y = int(input('y = '))
while y % x != 0:
    x, y = y % x, x#同时赋值,将y%x赋值给x,将x赋值给y
print(x)

课后作业

  • 找出100到999之间的水仙花数(各个位置上的立方和刚好等于这个数本本身)
    例如:153 = 1^3 + 5^3 + 3^3

    list1 = []
    for i in range(100, 1000):
        x1 = ((i - i % 100) / 100) ** 3
        x2 = ((i % 100 - i % 10) / 10) ** 3
        x3 = (i % 10) ** 3
        print(x3, x2, x1)
        if x1 + x2 + x3 == i:
            list1.append(i)
    print(list1)
    
  • 找出1~10000之间的完美数(除自身外所有因子的和等于这个数)
    例如:6 = 1 + 2 +3
    28 = 1 + 2 + 4 + 7 + 14

    for i in range(2, 10000):
        temp = 0
        for j in range(1, i-1):
            if i % j == 0:
                temp += j
        if temp == i:
            print(i)
    
  • 输入m和n(m >= n), 计算C(m, n)的值----->m! / (n! * (m - n)!)

    m = int(input('请输入一个正整数m = '))
    n = int(input('请输入一个正整数(小于m)n = '))
    x1 = 1
    x2 = 1
    x3 = 1
    for i in range(1, m+1):
        x1 *= i
        pass
    for o in range(1, n+1):
        x2 *= o
        pass
    for u in range(1, m-n+1):
        x3 *= u
        pass
    print(x1 / x2 * x3)
    
  • 输入一个正整数,判断他是不是质数(只能被1和自身整除的数)

    count = int(input('请输入一个正整数'))
    for i in (range(2, count - 1)):
        if count % i == 0:
            print('该数不是质数')
            break
        else:
            print('该数是质数')
            break
    
  • 输入三角形三条边的长度,如果能钩秤三角形就计算周长和面积,如果不能构成三角形,提示用户重新输入,直到正确

    count = 0
    a = float(input('输入第一条边长='))
    b = float(input('输入第二条边长='))
    c = float(input('输入第三条边长='))
    while count == 1:
        if a + b > c and a + c > b and b + c > a:
            count = 1
            pass
        else:
            print('请重新输入边长')
    p = (a + b + c) / 2
    area = (p * (p - a) * (p - b) * (p - c)) ** (1 / 2)
    print(f'该三角形面积为{area}')
    

相关解析,明天讲解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值