周末作业-循环练习题(1)

1.判断101-200之间有多少个素数,并输出所有素数。

count = 0
for x in range(101, 201):
    for y in range(2, int(x ** 0.5)+1):
        if x % y == 0:
            break
    else:
        print(x)
        count += 1
else:
    print("101-200之间素数个数:", count)

2.求整数1~100的累加值,但要求跳过所有个位为3的数。

sum_ = 0
for x in range(1, 101):
    if x % 10 == 3:
        sum_ += x
else:
    print("1~100的累加值(跳过个位为3):", sum_)

3.有⼀分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的第20个分数

m, z = 1, 2
n = int(input("求这个数列第20个分数n:"))
for x in range(2, n+1):
    t = m + z
    m = z
    z = t
print(z, "/", m, sep="")

4.写程序计算 n 的阶乘 n! 的结果

import math
n = int(input("请输入n:"))
print("n的阶乘:", math.factorial(n))

5.求1+2!+3!+…+20!的和

import math

sum_ = 0
for x in range(1, 21):
    sum_ += math.factorial(x)
print("1+2!+3!+...+20!的和:", sum_)

6.写程序求表达式 a + aa + aaa + aaaa+ … 的结果,其中a是1~9的数字,求和的项数用n来控制。(a和n可以用变量来表示)

例如:a为3, n为5的时候: 3 + 33 + 333 + 3333 + 33333

a = int(input("请输入a(1~9):"))
n = int(input("请输入n:"))
sum2 = 0
for x in range(n):
    sum1 = 0
    for y in range(x+1):
        sum1 += a * 10**y
    sum2 += sum1
print("result:", sum2)

7.控制台输出三角形

a.根据n的值的不同,输出相应的形状
n = 5时             n = 4
*****               ****
****                ***
***                 **
**                  *
*

b.根据n的值的不同,输出相应的形状(n为奇数)
n = 5               n = 7
  *                    *
 ***                  ***
*****                *****
                    *******

c. 根据n的值的不同,输出相应的形状
n = 4
   1
  121
 12321
1234321

n = 5
    1
   121
  12321
 1234321
123454321
a.
n = int(input("请输入n:"))
for x in range(n, 0, -1):
    for _ in range(x):
        print("*", sep="", end="")
    print()
b.
n = int(input("请输入n:"))
count = 1
count2 = n//2
for _ in range(n//2+1):
    for _ in range(count2):
        print(" ", end="", sep="")
    for _ in range(count):
        print("*", sep="", end="")
    count += 2
    count2 -= 1
    print()
c.
n = int(input("请输入n:"))
count1 = n-1
count2 = 1
for _ in range(n):
    for _ in range(count1):
        print(" ", sep="", end="")
    x = 1
    for y in range(count2):
        print(x, end="")
        if y >= count2//2:
            x -= 1
        else:
            x += 1
    print()
    count2 += 2
    count1 -= 1

8.小明单位发了100元的购物卡,小明到超市买三类洗化用品,洗发水(15元),香皂(2元),牙刷(5元)。要把100元正好花掉,可有哪些购买结合?

for x in range(100//15+1):
    for y in range(100//2+1):
        for z in range(100//5+1):
            if x*15 + y*2 + z*5 == 100:
                print("洗发水:", x, "香皂:", y, "牙刷:", z)

9.一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)?

h = 0.08 / 1000
count = 0
while 1:
    if h < 8848.13:
        h *= 2
        count += 1
    else:
        print("对折", count, "次", sep="")
        break

10.古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

while 1:
    n = int(input("第几个月的数量n:"))
    if n == 0:
        break
    if n == 1 or n == 2:
        print("第", n, "个数的值:", 1, sep="")
    else:
        n1 = 1
        n2 = 1
        for x in range(3, n+1):
            x = n1 + n2
            n1 = n2
            n2 = x
        else:
            print("第", n, "个月的数量:", x, sep="")

11.将一个正整数分解质因数。例如:输入90,打印出90=2x3x3x5。

num = int(input("请输入一个正整数:"))
count = 0
while 1:
    for x in range(2, int(num**0.5)+1):
        if num % x == 0:
            if count == 0:
                print(num, "=", sep="", end="")
            print(x, "x", sep="", end="")
            break
    else:
        if count == 0:
            print("没有!")
            break
        print(int(num))
        break
    count = 1
    num /= x

12.某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。求输入的四位整数加密后的值

num = int(input("请输入一个4位整数:"))
n1 = (num // 1000 + 5) % 10
n2 = (num // 200 % 10 + 5) % 10
n3 = (num // 10 % 10 + 5) % 10
n4 = (num % 10 + 5) % 10
num = n4 * 1000 + n3 * 100 + n2 * 10 + n1
print("加密后:", num)

13.将一个正整数分解质因数。例如:输入90,打印出90=2x3x3x5。

num = int(input("请输入一个正整数:"))
count = 0
while 1:
    for x in range(2, int(num**0.5)+1):
        if num % x == 0:
            if count == 0:
                print(num, "=", sep="", end="")
            print(x, "x", sep="", end="")
            break
    else:
        if count == 0:
            print("没有!")
            break
        print(int(num))
        break
    count = 1
    num /= x

14.本金10000元存入银行,年利率是千分之三。每过1年,将本金和利息相加作为新的本金。计算5年后,获得的本金是多少。

money = 1e4
for _ in range(5):
    x = money*3e-3
    money += x
print("5年后本金:", money)

15.输入一个整数,计算它各位上数字的和。(注意:输入的整数可以是任意位)

num = int(input("请输入一个整数:"))
sum_ = 0
while 1:
    if num != 0:
        sum_ += num % 10
    else:
        print("各位数字和:", sum_)
        break
    num //= 10

16.求两个数的最大公约数和最小公倍数。(提示:公约数一定小于等于两数中的小的那个数,且能同时被两个数整除;公倍数一定大于等于两数中的大数,且是大数的倍数又能被两数中的小数整除)

方法1:
num1 = int(input("请输入一个数:"))
num2 = int(input("请输入另一个数:"))
z = 1
count = 0
if num1 % num2 == 0:
    print("最大公约数:", num2)
    print("最大公倍数:", num1)
elif num2 % num1 == 0:
    print("最大公约数:", num1)
    print("最大公倍数:", num2)
else:
    while 1:
        flag = 0
        for x in range(2, int(num1**0.5)+1):
            for y in range(2, int(num2**0.5)+1):
                if num1 % x == 0 and num2 % y == 0:
                    if x == y:
                        z *= x
                        num1 /= x
                        num2 /= x
                        flag = 1
                        count += 1
        if flag == 0 and count == 0:
            print("最大公约数:", 1)
            print("最小公倍数:", num1*num2)
            break
        elif flag == 0 and count != 0:
            print("最大公约数:", z)
            print("最小公倍数:", int(z*num1*num2))
            break
方法2:
a=int(input("请输入一个数:"))
b=int(input("请输入另一个数:"))
if a>b:
    c=a
    a=b
    b=c
for i in range(a,0,-1):
    if(a%i==0 and b%i==0):
        print("最大公约数为:",i)
        break
print("最小公倍数为:",a/i*b)
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页