python

50.最大数的次数 

def num_max():
    ls = []
    while True:
        a = int(input("请输入数字:"))
        ls.append(a)
        if a == 0:
            break
    print(ls)
    count = 1
    max_num = ls[0]
    for i in range(len(ls) - 1):
        if ls[i] == max_num:
            count += 1
        elif ls[i] > max_num:
            max_num = ls[i]
            count = 1
    print(f"最大数字:{max_num}")
    print(f"最大数字出现的次数{count}")


num_max()

请输入数字:3
请输入数字:5
请输入数字:2
请输入数字:5
请输入数字:5
请输入数字:5
请输入数字:0
[3, 5, 2, 5, 5, 5, 0]
最大数字:5
最大数字出现的次数4
 

51.十进制到二进制

def translate(n):
    ls = []
    s = ""
    while n > 0:
        b = n % 2
        ls.append(b)
        n //= 2
    while len(ls) > 0:
        s = s + str(ls.pop())
    print(s)


a = int(input("请输入一个十进制数:"))
translate(a)

 请输入一个十进制数:48
110000

52.十进制到十六进制

def translate(number):
    ls = []
    s = ""
    while number > 0:
        numbers = number % 16
        if numbers == 10:
            numbers = 'A'
        elif numbers == 11:
            numbers = 'B'
        elif numbers == 12:
            numbers = 'C'
        elif numbers == 13:
            numbers = 'D'
        elif numbers == 14:
            numbers = 'E'
        elif numbers == 15:
            numbers = 'F'
        ls.append(numbers)
        number //= 16
    while len(ls) > 0:
        s = s + str(ls.pop())
    print(s)


a = int(input("请输入一个十进制数:"))
translate(a)

 请输入一个十进制数:1000
3E8

53.蒙特卡罗模拟

import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure(figsize=(9, 9))
ax = fig.add_subplot(111)
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data', 0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data', 0))

# 点数
n = 1000000
# 矩形边界
x_min, x_max = -1.0, 1.0
y_min, y_max = -1.0, 1.0

x = np.random.uniform(x_min, x_max, n)  # 均匀分布
y = np.random.uniform(y_min, y_max, n)


def f(x):
    return np.linspace(0, 1, 100)


res1 = sum(np.where(x < 0, 1, 0))
res2 = sum(np.where(y.all() > 0 and y.all() < f(x), 1, 0))
res = res1 + res2
integral = res / n
print('蒙特卡罗模拟得到的积分值: ', integral)

ax.scatter(x, y)  # 散点图

rect = plt.Rectangle((-1.0, -1.0), 1.0, 2.0, color='red', alpha=0.5, label='area')
p = plt.Polygon(xy=[[0.0, 0.0], [0.0, 1.0], [1.0, 0.0]], color='red', alpha=0.5, label='area')
ax.add_patch(rect)
ax.add_patch(p)

plt.show()

 

蒙特卡罗模拟得到的积分值:  0.499807 

 54.显示闰年

def year():
    num, count = 1, 0
    for i in range(2001, 2101):
        if i % 400 == 0 or i % 4 == 0 or i % 100 != 0:
            num = i
            count += 1
            print(num, end='\t' if count % 10 else '\n')


if __name__ == '__main__':
    year()

2001    2002    2003    2004    2005    2006    2007    2008    2009    2010
2011    2012    2013    2014    2015    2016    2017    2018    2019    2020
2021    2022    2023    2024    2025    2026    2027    2028    2029    2030
2031    2032    2033    2034    2035    2036    2037    2038    2039    2040
2041    2042    2043    2044    2045    2046    2047    2048    2049    2050
2051    2052    2053    2054    2055    2056    2057    2058    2059    2060
2061    2062    2063    2064    2065    2066    2067    2068    2069    2070
2071    2072    2073    2074    2075    2076    2077    2078    2079    2080
2081    2082    2083    2084    2085    2086    2087    2088    2089    2090
2091    2092    2093    2094    2095    2096    2097    2098    2099    2100

55.十进制到十六进制

这题和53题是一样的,都是十进制到十六进制的转换 

56.求一个整数各个数字的和

def sumDigits(num):
    sum = 0
    while num != 0:
        n = num % 10
        sum += n
        num //= 10
    print(f"整数的各个数字之和为{sum}")


if __name__ == '__main__':
    num = int(input("请输入一个整数:"))
    sumDigits(num)

 请输入一个整数:12345
整数的各个数字之和为15

57.回文整数

def reverse(x):
    x = int(str(x)[::-1])
    return x


def ispalindrome(n):
    if reverse(x) == n:
        print("这个整数是回文整数")
    else:
        print("这个整数不是回文数")


if __name__ == '__main__':
    x = int(input("请输入一个整数:"))
    ispalindrome(x)

请输入一个整数:12321
这个整数是回文整数 

 58.反向显示一个整数

def reverse(x):
    x = int(str(x)[::-1])
    print(x)


reverse(x)

请输入一个整数:123
321

59.摄氏度和华氏度之间的转换

def celsiusToFahrenheit(celsius):
    return (9 / 5) * celsius + 32


def fahrenheitToCelsius(fahrenheit):
    return (5 / 9) * (fahrenheit - 32)


if __name__ == '__main__':
    print("-" * 50)
    print("Celsius\t  Fahrenheit\t")
    print("-" * 50)
    for i in range(40, 30, -1):
        res1 = celsiusToFahrenheit(i)
        print("{:.1f}\t  {:.1f}\t".format(i, res1))
    print("-" * 50)
    print("Fahrenheit\t  Celsius\t")
    print("-" * 50)
    for j in range(120, 29, -1):
        res2 = fahrenheitToCelsius(j)
        print("{:.1f}\t  {:.1f}\t".format(j, res2))
    print("-" * 50)

--------------------------------------------------
Celsius      Fahrenheit    
--------------------------------------------------
40.0      104.0    
39.0      102.2    
38.0      100.4    
37.0      98.6    
36.0      96.8    
35.0      95.0    
34.0      93.2    
33.0      91.4    
32.0      89.6    
31.0      87.8    
--------------------------------------------------
Fahrenheit      Celsius    
--------------------------------------------------
120.0      48.9    
119.0      48.3    
118.0      47.8    
117.0      47.2    
116.0      46.7    
115.0      46.1    
114.0      45.6    
  ....          ....

60.数列求和

def caculate(n):
    sum = 0
    for x in range(n, 0, -1):
        sum = sum + x / (x + 1)

    return sum


if __name__ == '__main__':
    print("-" * 50)
    print("i\t   m(i)\t")
    print("-" * 50)
    for i in range(1, 21):
        print("{}  {:.4f}".format(i, caculate(i)))
    print("-" * 50)

 --------------------------------------------------
i       m(i)    
--------------------------------------------------
1  0.5000
2  1.1667
3  1.9167
4  2.7167
5  3.5500
6  4.4071
7  5.2821
8  6.1710
9  7.0710
10  7.9801
11  8.8968
12  9.8199
13  10.7484
14  11.6818
15  12.6193
16  13.5604
17  14.5049
18  15.4523
19  16.4023
20  17.3546
--------------------------------------------------

61.triangle模块

import math


class Triangle(object):

    def __init__(self, x, y, z):
        self.x = x
        self.y = y
        self.z = z

    def check(self, x, y, z):
        if x + y <= z or y + z <= x or z + x <= y:
            print("对不起,这三条边无法构成三角形")
            return False
        return True

    def get_cal(self):
        return self.x + self.y + self.z

    def get_area(self):
        p = self.get_cal() / 2
        return math.sqrt((p - self.x) * (p - self.y) * (p - self.z) * p)


if __name__ == '__main__':
    x = float(input("请输入三角形的第一个边:"))
    y = float(input("请输入三角形的第二个边:"))
    z = float(input("请输入三角形的第三个边:"))
    t1 = Triangle(x, y, z)
    if t1.check(x, y, z):
        print(f"该三角形的面积是:{t1.get_area()}")

 请输入三角形的第一个边:3
请输入三角形的第二个边:4
请输入三角形的第三个边:5
该三角形的面积是:6.0

62.平方根的近似求法

63.回文素数

def isPrime(n):
    for i in range(2, n):
        if n % i == 0:
            return False
    return True


def isPalindrome(n):
    t = str(n)
    if t == t[::-1]:
        return True
    return False


num, count = 1, 0

while count < 100:
    num += 1
    if isPalindrome(num) and isPrime(num):
        count += 1
        print(num, end='\t' if count % 10 else '\n')

 2    3    5    7    11    101    131    151    181    191
313    353    373    383    727    757    787    797    919    929
10301    10501    10601    11311    11411    12421    12721    12821    13331    13831
13931    14341    14741    15451    15551    16061    16361    16561    16661    17471
17971    18181    18481    19391    19891    19991    30103    30203    30403    30703
30803    31013    31513    32323    32423    33533    34543    34843    35053    35153
35353    35753    36263    36563    37273    37573    38083    38183    38783    39293
70207    70507    70607    71317    71917    72227    72727    73037    73237    73637
74047    74747    75557    76367    76667    77377    77477    77977    78487    78787
78887    79397    79697    79997    90709    91019    93139    93239    93739    94049

 64.反素数

def isPrime(n):
    for i in range(2, n):
        if n % i == 0:
            return False
    return True


def reverse_num(n):
    return int(str(num)[::-1])


def isPalindrome(n):
    t = str(n)
    if t == t[::-1]:
        return False
    return True


num, count = 1, 0

while count < 100:
    num += 1
    if isPrime(reverse_num(num)) and isPrime(num) and isPalindrome(num):
        count += 1
        print(num, end='\t' if count % 10 else '\n')

13    17    31    37    71    73    79    97    107    113
149    157    167    179    199    311    337    347    359    389
701    709    733    739    743    751    761    769    907    937
941    953    967    971    983    991    1009    1021    1031    1033
1061    1069    1091    1097    1103    1109    1151    1153    1181    1193
1201    1213    1217    1223    1229    1231    1237    1249    1259    1279
1283    1301    1321    1381    1399    1409    1429    1439    1453    1471
1487    1499    1511    1523    1559    1583    1597    1601    1619    1657
1669    1723    1733    1741    1753    1789    1811    1831    1847    1867
1879    1901    1913    1933    1949    1979    3011    3019    3023    3049

65.梅林素数

import math


def prime(n):
    k = math.sqrt(n) + 1
    i = 2
    while i <= k:
        if n % i == 0:
            return 0
        i += 1
    return 1


if __name__ == "__main__":
    n = 0
    print("p\t  2^p - 1\t")
    for i in range(2, 32):
        p = (2 ** i) - 1  # 求梅森数
        if prime(p):  # 判断p是否为梅森素数
            n += 1
            print(f"{i}\t   {p}\t")

 p      2^p - 1    
2       3    
3       7    
5       31    
7       127    
13       8191    
17       131071    
19       524287    
31       2147483647

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值