本站消息

  出租广告位,需要合作请联系站长

  今日名言-想象你自己对困难作出的反应,不是逃避或绕开它们,而是面对它们,同它们打交道,以一种进取的和明智的方式同它们奋斗 。——马克斯威尔·马尔兹

  今日名言-用谅解、宽恕的目光和心理看人、待人。人就会觉得葱笼的世界里,春意盎然,到处充满温暖。——蔡文甫


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

Python学习的第四天

发布于2021-07-25 07:36     阅读(1244)     评论(0)     点赞(28)     收藏(5)


Python学习的第四天

今天做关于分支(选择)和循环结构的例题。

英寸和厘米的转换

 作业:单位转换

 x = float(input('请输入需要转换的长度'))
 y = input()
 if y == 'cm':
     print(f'{x}cm = {x / 2.54}in')
 elif y == 'in':
     print(f'{x}in = {x * 2.54}cm')

请添加图片描述
请添加图片描述

输出100以内3和5的倍数,并求出他们的和

 x=0
 for i in range(1, 101):
     if i % 3 == 0 or i % 5 == 0:
         x += i
         print(i, end=' ')
print(x)

请添加图片描述

输入一个非负整数n,输出1~n,以及它所对应的平方、立方和n的n次方

n = int(input('n='))
print('n'.ljust(10), end='')
print('square'.ljust(10), end='')
print('cube'.ljust(10), end='')
print('nth-power'.ljust(10))
for i in range(1, n + 1):
    print(f'{i:<10d} {i ** 2:<10d} {i ** 3:<10d} {i ** i:<10d}')

请添加图片描述

输入一个非负整数n,计算n的阶乘

x = 1
n = int(input('n='))
for i in range(1, n + 1):
    x *= i
print('n的阶乘', x)

请添加图片描述

输入两个正整数,输出他们的最大公约数

  • 普通方法
a = int(input('a='))
b = int(input('b='))
for i in range(b, 0, -1):
    if a % i == 0 and b % i == 0:
        print(f'{a}和{b}的最大公约数是{i}')
        break
  • 辗转相除法
a = int(input('a='))
b = int(input('b='))
while b % a != 0:
    a, b = b % a, a
print(f'{a}和{b}的最大公约数是{i}')

请添加图片描述

水仙花数

for i in range(100, 1000):
    a = i // 100
    b = i % 10
    c = i // 10 - a * 10
    if a ** 3 + b ** 3 + c ** 3 == i:
        print(i)

请添加图片描述

完美数

  • 普通方法
for i in range(1, 10001):
    x = 0
    for j in range(1, i):
        if i % j == 0:
            x += j
    if x == i:
        print(x)

请添加图片描述

  • 简单优化
import time
start = time.time()
for i in range(2, 10000):
    x = 1
    for j in range(2, int(i ** 0.5)+1):
        if i % j == 0:
            x += j
            if j != i // j:
                x += i // j
    if x == i:
        print(i)
end = time.time()
print(f'执行时间{end - start:.3f}秒')

请添加图片描述

输入正整数m和n(m>n),计算C(m,n)的值—>m!/(n! * (m-n)!)

m = int(input('m='))
n = int(input('n='))
x, y, z = 1, 1, 1
for i in range(1, m + 1):
    x *= i
for j in range(1, n + 1):
    y *= j
for k in range(1, m - n + 1):
    z *= k
print(f'C({m},{n})={x / (y * z)}')

请添加图片描述

输入一个正整数,判断其是否为质数

  • 普通方法请添加图片描述
x = int(input('请输入一个正整数:'))
for i in range(2, x):
    if x % i == 0:
        print(f'{x}不是质数')
        break
    elif i == x - 1:
        print(f'{x}是质数')
  • 简单优化

    x = int(input('请输入一个正整数:'))
    for i in range(2, x):
        y = True
        if x % i == 0:
            print(f'{x}不是质数')
            y = False
            break
        if y == True:
            print(f'{x}是质数')
    

请添加图片描述
请添加图片描述

输入三角形三条边长,判断是否能构成三角形,如果可以,计算出周长和面积,如果不能,提示重新输入

  • 普通方法
a = float(input('a='))
b = float(input('b='))
c = float(input('c='))
while not(a + b > c and b + c > a and a + c > b):
    print('不能构成三角形,请重新输入')
    a = float(input('a='))
    b = float(input('b='))
    c = float(input('c='))
p = (a+b+c)/2
print(f'周长为{a+b+c}, 面积为{(p*(p-a)*(p-b)*(p-c)) ** 0.5}')
  • 简单优化
while True:
    a = float(input('a='))
    b = float(input('b='))
    c = float(input('c='))
    if a + b > c and b + c > a and a + c > b:
        p = (a + b + c) / 2
        print(f'周长为{a + b + c}, 面积为{(p * (p - a) * (p - b) * (p - c)) ** 0.5}')
        break
    else:
        print('不能构成三角形,请重新输入')

请添加图片描述

进行数字的翻转

n = int(input('n='))
x = n
total = 0
while n > 0:
    total = total * 10 + n % 10
    n //= 10
print(f'{x}翻转之后得到{total}')

请添加图片描述

打印乘法口诀表

for i in range(1, 10):
    for j in range(1, i+1):
        print(f'{i} * {j} = {i * j}', end='\t')
    print()

请添加图片描述

输入一个正整数n,输出n个斐波拉切数(前两项之和等于后一项)

  • 普通方法
n = int(input('n='))
x, y = 0, 1
for i in range(1, n + 1):
    z = x + y
    y = x
    x = z
    print(z, end=' ')
  • 简单优化
# n = int(input('n='))
# x, y = 0, 1
# for _ in range(1, n + 1):
#     y, x = x, x+y
#     print(x, end=' ')

请添加图片描述

鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一,用百钱买白鸡,问鸡翁、鸡母、鸡雏几何

采用穷举法:列举所有可能性,然后设置条件,找到问题的解(暴力破解法)

  • 普通方法
for x in range(0, 21):
    for y in range(0, 34):
        for z in range(0, 100, 3):
            if x + y + z == 100 and 5 * x + 3 * y + z / 3 == 100:
                print(x, y, z, sep=',')
  • 简单优化
for x in range(0, 21):
    for y in range(0, 34):
        z = 100 - x - y
        if z % 3 == 0 and x + y + z == 100 and 5 * x + 3 * y + z / 3 == 100:
            print(x, y, z, sep=',')

请添加图片描述

分鱼问题

五个人(ABCDE)晚上去捕鱼,捕了不计其数的鱼,然后累了去睡觉。
第二天,A第一个醒过来,把鱼分成5份,扔掉了多余的一条,然后拿走了自己的一份;
B第二个醒过来,以为鱼没有被分过,把剩下的鱼分成了5份,扔掉了多余的一条,拿走自己的1份;
C、D、E依次醒过来,都按照同样的方法来分鱼。问他们最少捕了多少条鱼

i = 1
while True:
    k = i
    j = True
    for _ in range(5):
        if (k - 1) % 5 == 0:
            k = (k - 1) * 4 / 5
        else:
            j = False
            break
    if j:
        print(i)
        break
    i += 5

请添加图片描述

猜点数

计算机产生一个1-100的随机数,人输入自己猜的数字
计算机给出对应的提示“大一点”、“小一点”或“恭喜你猜对了”,直到猜中为止
如果猜的次数超过7次,计算机温馨提示“智商余额明显不足”

import random

x = random.randrange(1, 101)
y = int(input('请猜测一个数字'))
c = 1
while x != y:
    if x > y:
        print('大一点')
    else:
        print('小一点')
    c += 1
    y = int(input('请猜测一个数字'))
print('恭喜你猜对了')
print(f'共猜了{c}次')
if c > 7:
    print('智商余额明显不足')

请添加图片描述

请添加图片描述

从键盘输入10个大于0小于100的整数,找到平均值,最大值和最小值。

x, y, z = 100, 0, 0
for _ in range(10):
    i = int(input('请输入0到100的整数:'))
    z += i
    if x > i:
        x = i
    if y < i:
        y = i
print(f'平均值{z / 10},最大值{y},最小值{x}')

请添加图片描述

原文链接:https://blog.csdn.net/m0_52863098/article/details/119007673



所属网站分类: 技术文章 > 博客

作者:你做的菜有点咸

链接:http://www.pythonpdf.com/blog/article/503/98f3b04056cdf40b13bd/

来源:编程知识网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

28 0
收藏该文
已收藏

评论内容:(最多支持255个字符)