Python学校非计分作业:循环结构体

本文介绍了编程中解决一系列数学问题的代码示例,包括查找最大值、分数求和、使用格里高利公式求π、整数位数统计、验证哥德巴赫猜想、判断回文数等,展示了Python在处理基础算法中的应用。
摘要由CSDN通过智能技术生成

目录

1.一组数找最大值

 3.分数序列求和

 4. 使用格里高利公式求π的近似值

 5.计算1*2+3*4+5*6+…+n*(n+1)

 6.统计整数的位数 ( 这道题竟然没一次做对!)

 10.验证哥德巴赫猜想( !)

 11.判断回文数( !)

 12.元音字母统计程序

 13.十进制转换成 N 进制( !)

 16.猴子吃桃( !)

 18.球的反弹高度

19.  小写字母转换为大写字母

22. 完数判断程序(  !)

26.两个分数求和( !)

20.共有多少种解决方案


1.一组数找最大值

用了列表

numbers=[]#建立空的列表
while True:
    num = input().split()#1 2 3 0 有空格的一组数输入
    for n in num:
        n = int(n)#记得每个字符串遍历的时候要转化成int
        if n == 0:
            break
        numbers.append(n)
    if n == 0:#这里还要有一遍,使得大循环出来
        break
max_number = max(numbers)#用max函数求最大值
counter = numbers.count(max_number)#查询列表中某个数出现的个数

print(max_number,counter)

不用列表:

max_num = float('-inf')#设最大初始值为负无穷
count = 0
num = input().split()
for n in num:
    n = int(n)
    if n == 0:
        break
    if n > max_num:
        max_num = n
        count = 1
    elif n == max_num:
         count += 1
print(max_num,count)

 3.分数序列求和

n=int(input())
sum=0
a=0
for i in range(1,n+1):#range是左闭右开
    a=i+a
    b=1/a
    sum=sum+b
print(f"{sum:.2f}")

 4. 使用格里高利公式求π的近似值

import math
n = int(input())
sum = 0.0
fenmu = 1 #分母
a = 1 #加减变化
term = a/fenmu #每一项

while abs(term) > 10 ** -n:#最后一项绝对值小于10的-n次幂
    sum = sum + term
    fenmu += 2
    a= a * (-1)
    term = a/fenmu


pi_app = 4 * sum
print(f"{pi_app:.5f}")

 5.计算1*2+3*4+5*6+…+n*(n+1)

import math
n = int(input())
sum = 0
b = int((n+1)/2)
for i in range(1,b+1):
    a = (2*i-1) * (2*i)
    sum += a
print(sum)

 6.统计整数的位数 ( 这道题竟然没一次做对!)

注意输入 为0 的情况

import math

a = int(input())
m = abs(a)
i = 0

if a == 0:
    i =1

while m > 0:
    i += 1
    m = m // 10

print(i)

 10.验证哥德巴赫猜想( !)

import math
n = int(input())
def prime(x):
    m = x
    for i in range(2,x):
        if(m%i==0):
            return False
    return True

for j in range(2,n):#真是奇怪,这里不能从1开始,不允许输出1的那对
    if(prime(j) and n-j > n//2 and prime(n-j)):#只用输入小 大的那一半
        print(j,n-j)

 11.判断回文数( !)

a = int(input())
num = a
rev = 0

while(num>0):
    r = num%10
    num  = num//10
    rev = rev*10 + r

if rev == a:
    print(f"{a} yes")
else:
    print(f"{a} no")

 12.元音字母统计程序

word = input()
count = 0
for w in word:
    if w in 'aeiou':
        count += 1
print(count)

 13.十进制转换成 N 进制( !)

a,b = map(int,input().split())
list = ""#设置一个空列表,来储存最后的结果,把结果全部变成字符串
while a:
    yu = a%b
    list = str(yu) + list#将余数变成字符串 相加的位置不能变!!!不然就会输出是相反的
    a = a//b#切记要加上
print(list)

 16.猴子吃桃( !)

n = int(input())
x = 1
for i in range(0,n-1):#注意这里是n-1!!!
    x = (x+1)*2
print(x)

 18.球的反弹高度

import math
n = int(input())
sum = 100.00
a = 100.00
if n == 1:
    print("%.2f %.2f" % (sum,a/2))
else:
    for i in range(1,n):
        sum += a
        a /= 2
    a /=2
    print("%.2f %.2f" % (sum,a))

19.  小写字母转换为大写字母

string = input()
result = ""
for c in string:
    if c.islower():
        result += c.upper()
    else:
        result += c
print(result)

22. 完数判断程序(  !)

'+'.join(map(str, factors)):这部分使用了两个方法来构建一个字符串。首先,map(str, factors) 将 factors 列表中的每个元素转换为字符串类型。然后,'+'.join(...) 使用 + 符号将这些字符串连接起来,每个字符串之间用 + 符号分隔。

import math
n = int(input())
result = []#这里要用列表,而非空字符
for i in range(1,n):
    if(n%i==0):
        result.append(i)
if(sum(result)==n):
    print(f"{n}={'+'.join(map(str,result))}")
elif(sum(result)>n):
    print(f"{n}<{'+'.join(map(str,result))}")
elif(sum(result)<n):
    print(f"{n}>{'+'.join(map(str,result))}")

26.两个分数求和( !)

a,b  = input().split()
a1,a2 = map(int,a.split('/'))
b1,b2 = map(int,b.split('/'))
def gcd(m,n):
    while m % n:
        m,n = n,m % n
    return n
g = gcd(a2,b2)
fenmu = a2*b2//g
fenzi = a1*(fenmu//a2) + b1*(fenmu//b2)
g2 = gcd(fenzi,fenmu)
fenmu = fenmu // g2
fenzi = fenzi //g2
print(f"{fenzi}/{fenmu}")

split('/') 来解析输入的分数字符串。通过调用 split('/') 方法,将输入的字符串按照 / 进行分割,并得到一个包含分子和分母的字符串列表。

然后,使用 map(int,fraction1_input.split('/')) 将分子和分母的字符串转换为整数类型。

20.共有多少种解决方案

m = int(input())
r = 3
w = 5
b = 6
count = 0
for rn in range(1,r+1):#拿到的红球数量
    for wn in range(0,w+1):#拿到的白球的数量
        for bn in range(0,b+1):
            if(rn + wn + bn == m):
                count += 1
print(count)

  • 18
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值