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