python 习题2

(1)定义函数 max(x, y, z),返回三个整数的输⼊的最⼤值。

def max(x, y, z):
   if x>=y>=z or x>=z>=y:
       return x
   elif y>=x>=z or y>=z>=x:
       return y
   elif z>=x>=y or z>=y>=x:
       return z

a = max(4, 5, 7)
print(f"这三个数字中的最大值为{a}")

(2)定义函数 count( ) ,统计⼀个字符串中大写字母、⼩写字母、数字的个数,并以字典为结果返回给调用者。

def count(s):
    smallCount=0
    bigCount=0
    numberCount=0
    for i in s:
        if i>='a' and i<='z':
            smallCount=smallCount+1
        elif i>='A'and i<='Z':
             bigCount=bigCount+1
        elif i>='0'and i<='9':
            numberCount=numberCount+1
    print(f"这个字符串中的大写字母有{bigCount}个,小写字母有{smallCount}个,字母有{numberCount}个")
aaa=input("请输入你的字符串:")
count(aaa)

(3)编写程序判断点是否在正方形内。有一个正方形,四个角的坐标(x,y)分别是(1,-1),(1,1),(-1,-1),(-1,1),x是横轴,y是纵轴。写一个程序,判断一个给定的点是否在这个正方形内(包括正方形边界)。如果点在正方形内,则输出yes,否则输出no。(点的坐标(m,n)由外部输入)

point = input("请输入一个点的坐标,用空格分开").split()
m = float(point[0])
n = float(point[1])
if -1<=m<=1 and -1<=n<=1:
    print("yes")
else:
    print("no")

(4)编写一个函数,计算输出三角形的面积。要求外部输入三边的边长,其为浮点数类型。已知三角的面积公式为:A=(s*(s-a)*(s-b)*(s-c)) ** 0.5,其中a,b,c为三角形三边的边长,并且s=(a+b+c)/2。

s = input("请输入三角形的三边长,用空格分开").split()
a = float(s[0])
b = float(s[1])
c = float(s[2])
def sjxmj(sa, sb, sc):
    ss = (sa+sb+sc)/2
    A =(ss*(ss-sa)*(ss-sb)*(ss-sc))**0.5 # **是幂运算
    return A
B=sjxmj(a,b,c)
print(f"该三角形的面积为{B}")

(5)编写程序模拟轮盘抽奖游戏:

轮盘分为三部分: 一等奖, 二等奖和三等奖;轮盘转的时候是随机的。如果范围在[0,0.08)之间,代表一等奖,如果范围在[0.08,0.3)之间,代表2等奖,如果范围在[0.3, 1.0)之间,代表3等奖。

import random
def fun(num):
    if num >= 0 and num < 0.08:
        return 1
    elif num >= 0.08 and num < 0.3:
        return 2
    else:
        return 3
A= random.uniform(0,1)
B=fun(A)
print(f'该玩家获得了{B}等奖励')

(6)定义一个函数is_prime(n),判断输入的n是不是素数,是的话返回True,否则返回False。通过键盘输入两个整数X和Y,调用此函数输出两数范围之内素数的个数(包括X和Y)。

def is_prime(n):
    import math
    k = int(math.sqrt(n))
    for i in range(2, k + 2):
        if n % i == 0:
            break
    if i == k + 1:
        return True
    else:
        return False
def num(a,b):
    count=0
    for i in range(a,b+1):
        if is_prime(i):
            count = count+1
    print(f'共有{count}个素数')
X = int(input("请输入X的值:"))
Y = int(input("请输入Y的值:"))
num(X,Y)

(7)已知一个数如果从左往右读和从右往左读数字是相同的,则称这个数是回文数,如121,1221,15651都是回文数。现在请写出一个函数h(n),判断n是否为回文数,是的话返回True,否则返回False。利用上面的判断素数函数,找出所有既是回文数又是素数的3位十进制数。

def h(a):
    b = len(str(a))
    n=str(a)
    for i in range(b):
        if n==n[::-1]:
            return True
        else:
            return False
def is_prime(n):
    if n <= 1:
        return False
    for i in range(2, int(n ** 0.5) + 1):
        if n % i == 0:
            return False
    return True
def main():
    print("既是回文数又是素数的3位十进制数")
    for j in range(100,1000):
        if is_prime(j) and h(j):
            print(j)
main()

猜你喜欢

转载自blog.csdn.net/weixin_68479946/article/details/128793525