当前位置:   article > 正文

python题(5)_回文素数是指一个数既是素数又是回文数。例如,131,既是素数又是回文数。 用户输入

回文素数是指一个数既是素数又是回文数。例如,131,既是素数又是回文数。 用户输入

1.(最大数的出现)编写程序读取整数,找出它们中的最大值,然后计算它的出现次数。假设输入以数字0结束。假设你输入的是“3 525 5 5 0”;程序找出的最大数是5,而5的出现次数是4。(提示:维护两个变量max 和count。变量max存储的是当前最大数,而count存储的是它的出现次数。初始状态下,将第一个值赋值给max,将1赋值给count。将max和每个随后的数字进行比较。如果这个数字大于max,就将它赋值给max且将count重置为1。如果这个数等于max,给count自增1。)

  1. n = int(input("请输入你想要输入数的个数:"))
  2. i = 1
  3. ls = []
  4. count = 0
  5. while i <= n:
  6. ls.append(int(input(f"请输入第{i}个整数:")))
  7. i += 1
  8. print(f'您输入的数字有:{ls}')
  9. print(f'这些数的最大值为:{max(ls)}')
  10. for i in ls:
  11. if i == max(ls):
  12. count += 1
  13. print(f'{max(ls)}出现的次数为{count}')

044529948f3e44c18a47003cc84e8377.png

2. 十进制转换二进制

  1. print("求一个十进制数的二进制数")
  2. def dec2bin(x):
  3. x -= int(x)
  4. bins = []
  5. while x:
  6. x *= 2
  7. bins.append(1 if x >= 1. else 0)
  8. x -= int(x)
  9. return bins
  10. if __name__ == '__main__':
  11. a = float(input('请输入一个数:'))
  12. yuan = a
  13. a = str(a)
  14. tmp = a.split('.')
  15. qian = tmp[0] # 小数点前的数
  16. hou = tmp[1] # 小数点后的数
  17. qian = int(qian)
  18. lsz = [] # lsz表示整数部分
  19. # 整数部分计算:
  20. while qian != 0:
  21. z = qian % 2
  22. lsz.append(int(z))
  23. qian //= 2
  24. if qian == 0:
  25. ls = [0]
  26. lsz.reverse()
  27. zheng = str()
  28. for i in lsz:
  29. zheng += str(i)
  30. # 小数部分计算:
  31. b = len(hou)
  32. hou = int(hou)
  33. hou = hou / (10 ** b)
  34. lsx = dec2bin(hou) # lsx表示小数部分
  35. xiao = str()
  36. for i in lsx:
  37. xiao += str(i)
  38. print(f"{yuan}的二进制数是{zheng}.{xiao}")

 ed56265f3ce747c0b10742964fb97f5b.png3.(蒙特卡罗模拟)一个正方形被分为四个更小的区域,如图a所示。如果你投掷一个飞镖到这个正方形一百万次,这个飞镖落在一个奇数区域里的概率是多少?编写程序模拟这个过程然后显式结果。(提示:将这个正方形的中心放在坐标系统的中心位置,如图b所示。在正方形中随机产生一个点,然后统计这个点落入奇数区域的次数。)

5cfce534ee5248f9b0c0601f1e7ce815.png

  1. import random
  2. a = 0
  3. for i in range(1000000):
  4. x = random.uniform(-1, 1)
  5. y = random.uniform(-1, 1)
  6. if x < 0 or (x > 0 and y > 0 and x + y <= 1):
  7. a += 1
  8. b = a / 1000000
  9. print("在奇数区域的概率:", b)

461f9ad039fa411dadfea7db1a1158e9.png

 4.(显示闰年)编写程序显示21世纪(从2001年到2100年)里所有的闰年,每行显示10个闰年这些年被一个空格隔开。

  1. count = 0
  2. for i in range(2001, 2100):
  3. if i % 4 == 0:
  4. print(i, end=' ')
  5. count += 1
  6. if count % 10 == 0:
  7. print()

b6e7d170018f43a681414e9c5e5e3e74.png

5.(求一个整数各个数字的和)编写一个函数,计算一个整数各个数字的和。使用下面的函数头:def sumDigits(n):

  1. def sumdigits(n):
  2. count = 0
  3. str_n = str(n)
  4. for i in str_n:
  5. count += int(i)
  6. return count
  7. if __name__ == '__main__':
  8. a = int(input("请输入一个整数:"))
  9. print(f"{a}的各位数和为{sumdigits(a)}")

 69d62e1de5604cf68155c4675d425e50.png

 6.使用函数reverse'实现 isPalindrome。如果一个数的反向数和它的顺向数一样,那么这个数就被称为回文数。编写一个测试程序,提示用户输入一个整数,然后输出这个整数是不是回文数。

  1. def reverse(num):
  2. str_num = reversed(str(num))
  3. reverse_num = str()
  4. for i in str_num:
  5. reverse_num += str(i)
  6. return reverse_num
  7. def isPalindrome(num, reverse_num):
  8. str_num = str(num)
  9. str_reverse_num = str(reverse_num)
  10. kun = str()
  11. for j in str_reverse_num:
  12. kun += str(j)
  13. if kun == str_num:
  14. return True
  15. return False
  16. if __name__ == '__main__':
  17. a = int(input("请输入一个整数:"))
  18. b = reverse(a)
  19. print(f"{a}的反向数{b}")
  20. print(f"{isPalindrome(a, b)}")

305b3f9c93a74ff7a727e1de79285f8a.png

7.(摄氏度和华氏度之间的转换)编写一个包含下面两个函数的模块

  1. def huatoshe(fahrenheit):
  2. celsius = (5 / 9) * (fahrenheit - 32)
  3. return round(celsius, 2)
  4. def shetohua(celsius):
  5. fahrenheit = (9 / 5) * celsius + 32
  6. return round(fahrenheit, 2)
  7. print("------------------")
  8. print("摄氏度\t\t华氏度")
  9. print("------------------")
  10. for c in range(31, 41):
  11. f = shetohua(c)
  12. print(f"{c}\t\t\t{f}")
  13. print("------------------")
  14. print("华氏度\t\t摄氏度")
  15. print("------------------")
  16. for f in range(30, 120, 10):
  17. c = huatoshe(f)
  18. print(f"{f}\t\t\t{c}")

 fd2a731d0e9744278ae23435c35be76c.png

 8.(数列求和)编写一个函数计算下面的数列。

ddbb44f636f140a199f59a43245babb2.png

  1. def series_sum(n):
  2. x = 0
  3. for i in range(1, n + 1):
  4. x += i / (i + 1)
  5. return x
  6. if __name__ == '__main__':
  7. for j in range(1, 21):
  8. s = series_sum(j)
  9. print("%d\t%.4f" % (j, s))

bc2233f222184eb080cbce2c77282386.png

 9.三角形判断及面积和周长e14f20eb5013446ca0ca50917f88a432.png

  1. import math
  2. def isvalid(s1, s2, s3):
  3. if s1 + s2 > s3 and s1 + s3 > s2 and s2 + s3 > s1:
  4. return True
  5. else:
  6. return False
  7. def area(s1, s2, s3):
  8. d = cal(s1, s2, s3) / 2
  9. return math.sqrt((d * (d - s1) * (d - s2) * (d - s3)))
  10. def cal(s1, s2, s3):
  11. return s1 + s2 + s3
  12. if __name__ == '__main__':
  13. while True:
  14. a = float(input("请输入第一条边长度:"))
  15. b = float(input("请输入第二条边长度:"))
  16. c = float(input("请输入第三条边长度:"))
  17. if isvalid(a, b, c):
  18. print(f"面积{area(a, b, c)}")
  19. print(f"周长{cal(a, b, c)}")
  20. break
  21. else:
  22. print("输入的三边不能构成三角形!!")

35babdfa33714bcba6263ad11c6f0685.png87c0692ac170447595ae132b360c8a51.png

 10.(回文素数)回文素数是指一个数既是素数又是回文数。例如,131既是素数也是回文数。数字313和717都是如此。编写程序显示前100个回文素数。每行显示10个数字,并且准确对齐

  1. def reverse(num):
  2. str_num = reversed(str(num))
  3. reverse_num = str()
  4. for i in str_num:
  5. reverse_num += str(i)
  6. return reverse_num
  7. def isPalindrome(num, reverse_num):
  8. str_num = str(num)
  9. str_reverse_num = str(reverse_num)
  10. kun = str()
  11. for j in str_reverse_num:
  12. kun += str(j)
  13. if kun == str_num:
  14. return True
  15. return False
  16. def isPrime(num):
  17. for i in range(2, num // 2+1):
  18. if num % i == 0:
  19. return False
  20. return True
  21. if __name__ == '__main__':
  22. count = 0
  23. num = 1
  24. while count < 100:
  25. num += 1
  26. b = reverse(num)
  27. if isPrime(num) and isPalindrome(num, b):
  28. count += 1
  29. print("%5d" % num, end=" " if count % 10 else '\n')

c11a01cd301145b38bcf7225b19a3a79.png

 11.(反素数)反素数(逆向拼写的素数)是指一个将其逆向拼写后也是一个素数的非回文数。例如:17和71都是素数,所以,17和71都是反素数。编写程序显示前100个反素数。每行显示10个数字,并且准确对齐

  1. def num_isPrime(num):
  2. for i in range(2, num):
  3. if num % i == 0:
  4. return False
  5. return True
  6. def isPalindrome(num):
  7. t = str(num)
  8. if t == t[::-1]:
  9. return False
  10. return True
  11. def reverse_num_isPrime(num):
  12. str_num = reversed(str(num))
  13. reverse_num = str()
  14. for i in str_num:
  15. reverse_num += str(i)
  16. reverse_num = int(reverse_num)
  17. for i in range(2, reverse_num):
  18. if reverse_num % i == 0:
  19. return False
  20. return True
  21. if __name__ == '__main__':
  22. num, count = 1, 0
  23. while count < 100:
  24. num += 1
  25. if num_isPrime(num) and reverse_num_isPrime(num) and isPalindrome(num):
  26. count += 1
  27. print("%4d" % num, end=" " if count % 10 else '\n')

e8988bc9c6b44eafb574184c3f55b059.png

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/516463
推荐阅读
相关标签
  

闽ICP备14008679号