Python基础题60道

'''Demo01 摄氏温度转化为华氏温度

题目描述

输入一个摄氏温度的值,将它转变为华氏温度,并将结果输出

转换的公式为如下:

输入输出描述

输入一个值表示摄氏温度celsius

输出华氏温度fahrenheit ,结果保留一位小数点

示例

输入:

43

输出:'''

cel = eval (input())

fah = (9 / 5) * cel + 32

print("%.1f" % fah)

'''

 Demo02 计算圆柱体的体积

题目描述

输入圆柱的半径和高,并利用如下公式计算圆柱体的底面积和体积。

输入输出描述

分别输入圆柱的半径radius和高度length,两个数据之间用空格分隔

输出两行,第一行为圆柱底面积area,第二行为圆柱体积volume,结果保留两位小数点

示例

输入:

5.5 12

输出:

95.03

 1140.41

'''

radius, length = input().split() #输入radius length

radius = float(radius)

length = float(length)

area = radius * radius * 3.14   #计算底面积

volume = area * length      #计算volume

print("%.2f" % area)          #输出

print("%.2f" % volume)        #输出

''' Demo03 将英尺数转换为米数

题目描述

输入英尺数然后将它转换为米数,并输出结果,一英尺等于0.305米

输入输出描述

输入一个数据表示英尺数

输出转换后的米数,结果保留四位小数点

示例

输入:

16.5

输出:

5.0325

'''

EC = float(input())

m = 0.305 * EC

print("%.4f" %m)

''' Demo04 计算小费

题目描述

读取小计和酬金率,然后计算小费以及合计金额。例如客户的小计为10元,酬金率为15%,那么小费是

1.5元,合计金额为11.5元

输入输出描述

分别输入小计和酬金率,两个数据用之间用空格分隔

输出两行,第一行为小费,第二行为合计金额,结果保留两位小数

示例

输入:

15.69 15

输出:

2.35

18.04

'''

xiaoji, fare = input().split()

xiaoji = float(xiaoji)

fare = float(fare)

fare = fare / 100

xiaofei = xiaoji * fare  #计算小费

nsum = xiaofei + xiaoji   #计算总金额

print("%.2f" % xiaofei)

print("%.2f" % nsum)

'''Demo05 对一个整数中的各位数字求和

题目描述

读取一个0到1000之间的整数,并计算它各位数字之和

输入输出描述

输入一个[0,1000]之间的整数

输出该数字的各位数字之和

示例1

输入:

999

输出:

27

解释:

999各位数之和为9 + 9 + 9 = 27

示例2

输入:

12

输出:

3

'''

math = eval(input())

ge = math % 10#各位数的值

shi = (math // 10) % 10#十位数的值

bai = (math // 100) % 10#百位数的值

sum = ge + shi +bai   #计算个位数的和

print(ge)

print(shi)

print(bai)

print(sum)

'''

 Demo06 计算年数和天数

题目描述

输入分钟数,然后将该分钟数转换为年数和天数,假定一年有365天

输入输出描述

输入一个分钟数

输出两行,第一行为年数,第二行为天数

示例

输入:

1000000000

输出:

1902

 214

 '''

minutes = eval(input())

hours = minutes //60 #计算总小时

days = hours // 24   #计算总天数

years = days // 365  #计算总年数

days = days % 365    #计算多余的年数

print(years)

print(days)

'''

 Demo07 计算能量

题目描述

水从初始温度加热到最终温度是需要能量的,请计算需要多少能量,公式如下:

这里的M是按千克计的水量,初始温度和最终温度均为摄氏度,热量Q以焦耳计

输入输出描述

输入三行数据,第一行输入水量,第二行输入初始温度,第三行输入最终温度

输出所需的能量值,结果保留一位小数

示例

输入:

55.5

3.5

10.5

输出:

1625484.0

'''

M = input()

M = float(M)

initialTemperature = input()

initialTemperature = float(initialTemperature)

finalTemperature = input()

finalTemperature = float(finalTemperature)

Q = M * (finalTemperature - initialTemperature) * 4184

print("%0.1f" % Q)

'''Demo08 分割数字

题目描述

输入一个四位整数,并以反向顺序显示

输入输出描述

输入一个四位整数

输出四行,第一行为个位,第二行为十位,第三行为百位,第四行为千位

示例

输入:

5213

输出:

3

 1

 2

 5'''

print("输入一个四位整数")

M = int(input())

a = M % 10 #计算个位的值

b = (M // 10) % 10   #计算十位的值

c = (M // 100) % 10  #计算百位的值

d = (M // 1000) % 10 #计算千位的值

print(a)

print(b)

print(c)

print(d)

'''Demo09 计算三角形的面积

题目描述

输入三角形的三个顶点坐标,并计算其面积,计算公式如下

side1 = ((x1 - x2) ** 2 + (y1 - y2) ** 2) ** 0.5

side2 = ((x3 - x2) ** 2 + (y3 - y2) ** 2) ** 0.5

side3 = ((x1 - x3) ** 2 + (y1 - y3) ** 2) ** 0.5

s = (side1 + side2 + side3) / 2

area = (s * (s - side1) * (s - side2) * (s - side3)) ** 0.5

输入输出描述

输入六个数据,分别表示三角形三个顶点的坐标x1、y1、x2、y2、x3和y3,数据之间用空格分隔

输出三角形的面积,结果保留一位小数

示例

输入:

1.5 -3.4 4.6 5 9.5 -3.4

输出:

33.6

'''

x1, y1, x2, y2, x3, y3 = input().split()  #输入顶点坐标数据

x1 = float(x1)            

x2 = float(x2)

x3 = float(x3)    #将数据转换位为浮点数

y1 = float(y1)

y2 = float(y2)

y3 = float(y3)

side1 = ((x1 - x2) ** 2 + (y1 - y2) ** 2) ** 0.5

side2 = ((x3 - x2) ** 2 + (y3 - y2) ** 2) ** 0.5       #计算

side3 = ((x1 - x3) ** 2 + (y1 - y3) ** 2) ** 0.5

s = (side1 + side2 + side3) / 2

area = (s * (s - side1) * (s - side2) * (s - side3)) ** 0.5

print("%.1f" % area)

''' Demo10 显示当前时间

题目描述

输入你所在的时区,并输出当前的时间

输入输出描述

输入时区,如东八区为8,西五区为-5

输出二十四小时制的时间,格式为 时:分:秒

示例

输入:

8

输出:

21:43:12'''

import time

# 输入时区

timezone = int(input())

# 获取本地时间

local_time = time.localtime()

# 计算时区差值

hour_diff = timezone - 8  # 8代表东八区

# 调整时间

hour = local_time.tm_hour + hour_diff

minute = local_time.tm_min

second = local_time.tm_sec

# 格式化时间

time_str = f"{hour % 24:02d}:{minute:02d}:{second:02d}"

# 输出结果

print(time_str)

'''

Demo11 计算三角形的三个角

输入三角形的三个顶点坐标,并计算该三角形的三个角分别是多少(角度制)

其中a、b、c分别表示三条边,A、B、C分别表示三边对应的角

输入输出描述

输入六个数据,分别表示三角形三个顶点的坐标x1、y1、x2、y2、x3和y3,数据之间用空格分隔

输出三行,分别为A、B、C三个角的度数,结果保留两位小数

示例

输入:

1 1 6.5 1 6.5 2.5

输出:

15.26

 90.00

74.74

'''

import math

# 输入三角形三个顶点坐标

x1, y1, x2, y2, x3, y3 = map(float, input().split())

# 计算三角形三个边长

a = math.sqrt((x2 - x3) ** 2 + (y2 - y3) ** 2)

b = math.sqrt((x1 - x3) ** 2 + (y1 - y3) ** 2)

c = math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2)

# 计算三角形三个角度

A = math.degrees(math.acos((b**2 + c**2 - a**2) / (2 * b * c)))

B = math.degrees(math.acos((a**2 + c**2 - b**2) / (2 * a * c)))

C = 180 - A - B

# 输出结果

print("{:.2f}".format(A))

print("{:.2f}".format(B))

'''Demo12 最小数量的硬币

题目描述

假设硬币种类分为:一元硬币、两角五分硬币、一角硬币、五分硬币、一分硬币

输入总金额,并将总金额兑换成若干个硬币,并保证所兑换的硬币个数最少

输入输出描述

输入总金额

输出每种硬币的个数

示例

输入:

11.56

输出:

11个一元硬币

2个两角五分硬币

0个一角硬币

1个五分硬币

1个一分硬币'''

print("输入总金额")

a = 0

b = 0

c = 0

d = 0

e = 0

x = float(input())

#因为不知道要循环多少次,使用while

while x >= 0:

    if x >= 1:

        x = x - 1

        a = a + 1

    elif x >= 0.25:

        x = x - 0.25

        b = b + 1

    elif x >= 0.1:

        x = x - 0.1

        c = c + 1

    elif x >= 0.05:

        x = x - 0.05

        d = d + 1

    elif x >= 0.01:

        x = x - 0.01

        e = e + 1

    else:

        break

print(a,"个一元硬币")

print(b,"个两角五分硬币")

print(c,"个一角硬币")

print(f"{d}个五分硬币")

print(f"{e}个一分硬币")

'''

Demo13 正多边形的面积

题目描述

正多边形是边长相等的多边形,而且所有的角相等,计算正多边形的公式为:

     area = n * s ** 2 / (4 * math.tan(math.pi / n))

输入输出描述

输入两个数据分别表示边的个数n和边的长度s,数据之间用空格分隔

输出边长为s的正n多边形的面积,结果保留两位小数

示例

输入:

5 6.5

输出:

72.69

'''

import math

'''

Demo14 计算身体质量指数

题目描述

BMI是根据体重测量健康的方式,通过以千克为单位的体重除以以米为单位的身高的平方计算而出

BMI指数解读如下:

BMI < 18.5                  超轻

18.5 ≤ BMI < 25.0           标准

25.0 ≤ BMI <30.0            超重

30.0 ≤ BMI                  肥胖

输入输出描述

输入体重和身高,数据之间用空格分隔

输出BMI指数结果

示例

输入:

60 1.8

输出:

标准

'''

weight, height = map(float, input().split())   #输入

BMI = weight / height ** 2    #计算bmi

if BMI < 18.5:   #输出对应的结果

    print("超轻")

elif BMI < 25.0:

    print("标准")

elif BMI < 30.0:

    print("超重")

else:

 print("肥胖")

n, s = map(float, input().split())

area = n * s ** 2 / (4 * math.tan(math.pi / n))

print(round(area, 2))

'''Demo15 判定闰年

超重

肥胖

题目描述

一个年份如果能被4整除但不能被100整除,或者能被400整除,那么这个年份就是闰年

输入输出描述

输入一个年份

输出Yes表示该年份为闰年,No则表示不是闰年

示例1

输入:

2008

输出:

Yes

示例2

输入:

2002

输出:

No'''

year = int (input('请输入年份'))

if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:

    print("YES")

else:

    print("NO")

'''Demo16 中彩票

题目描述

随机产生一个两位数数字,然后用户输入一个两位数数字,并根据以下规则判定用户赢得的奖金是多少

(1)输入的数字和随机产生的数字完全相同(包括顺序),奖金为10000元

(2)输入的数字和随机产生的数字相同(不包括顺序),奖金为3000元

(3)输入的数字和随机产生的数字有一位数相同,奖金为1000美元

(4)输入的数字和随机产生的数字都不相同,没有奖金,0元

输入输出描述

输入一个两位数

输出两行,第一行输出那个随机产生的两位数,第二行输出用户的奖金

示例1

输入:

12

输出:

12

 10000

示例2

输入:

12

输出:

21

 3000

示例3

输入:

12

输出:

23

 1000

示例4

输入:

12

输出:

45

 0

'''

import random

randNum = random.randint(10,99)#输出一个随机值

userNum = eval(input())

r1 = randNum // 10   #算出个位与十位的值

r2 = randNum % 10

s1 = userNum // 10

s2 = userNum % 10

print(randNum)

if randNum == userNum:#判断输出对应的结果

    print(10000)

elif r1 == s2 and r2 == r1:

    print(5000)

elif r1 == s1 or r1 == s2 or r2 == r1 or r2 == s2:

    print(3000)

else:

    print(0)

''' Demo17 解一元二次方程

题目描述

一元二次方程 的解可以使用下面的公式计算

其中称为判别式,如果它为正,则方程有两个实数解;为零,方程只有一个实数解;为负,没

有实数解

输入输出描述

输入a、b、c三个数据,数据之间用空格分隔

两个解每行输出一个;一个解单行输出;无解则单行输出无实数解,保留两位小数

示例1

输入:

1.0 3 1

输出:-0.38-2.62

示例2

输入:

1 2.0 1

输出:-1.00

示例3

输入:

1 2 3

输出:

无实数解'''

a, b, c = input().split()

a = float(a)

b = float(b)

c = float(c)

delt = b ** 2 - 4 * a * c

if delt > 0:                           #判断

   x1 = (-b + delt ** 0.5) / (2 * a)   #计算

   x2 = (-b - delt ** 0.5) / (2 * a)

   print( "%0.2f" % x1)

   print("%0.2f" % x2)

elif delt == 0:

   x = -b / (2 * a)

   print( "%0.2f" %x )

else:

   print("无实数解")

'''

Demo18 解2x2线程方程

题目描述

如有一个2x2的线程方程组:

你可以使用克莱姆法则解该线性方程:

其中 为判别式,如果为零则输出无解

输入输出描述

输入a、b、c、d、e、f六个数据,数据之间用空格分隔

输出两行,第一行x的解,第二行y的解,保留一位小数

示例1

输入:

9.0 4.0 3.0 -5.0 -6.0 -21.0

输出:-2.0

 3.0

示例2

输入:

1.0 2.0 2.0 4.0 4.0 5.0

输出:

无解

'''

a, b, c, d, e, f = input().split() #输入

a = float(a)                      

b = float(b)

c = float(c)

d = float(d)

e = float(e)

f = float(f)  

if a * d - b * c == 0:             #判断并计算数据

    print("无解")

else :

    x = (e * d - b * f)/(a * d - b * c)

    y = (a * f - e * c)/(a * d - b * c)

    print("%0.1f" % x)

    print("%0.1f" % y)

'''

Demo19 未来是周几

题目描述

输入表示今天是一周内哪一天的数字(星期天是0,星期一是1,...,星期六是6)

并输入今天之后到未来某天的天数,然后输出该天是星期几

输入输出描述

输入两个数据,分别表示今日星期几的数字和未来某天的天数,数据之间用空格分隔

输出未来某天是星期几

示例1

输入:

1 3

输出:

星期四

示例2

输入:

0 31

输出:

星期三'''

'''

a, b = map(int, input().split())

days_of_week = ["星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"]

future_day = (a + b) % 7

print(days_of_week[future_day])

'''

print("输入")

a, b= eval(input.spilt())

c = (a + b) % 7              #对两者之和取余

if c == 0:                   #判断

    print("星期一")

elif c == 1:

    print("星期二")

elif c == 2:

    print("星期三")

elif c == 3:

    print("星期四")

elif c == 4:

    print("星期五")

elif c == 5:

    print("星期六")

else:

    print("星期天")

'''

Demo20 本年中的第几天

题目描述

给定某年、某月、某日的一个日期,计算该日是今年中的第几天

输入输出描述

输入三个数据分别表示年、月、日,数据之间用空格分隔

输出该日是今年中的第几天

示例1

输入:

2023 1 28

输出:

28

'''

Year, mouth, Day = map(float, input().split())

mouth = int(mouth)

# 判断是否为闰年

if Year % 4 == 0 and Year % 100 != 0 or Year % 400 == 0:

    feb = 29

else:

    feb = 28

mouth_num = 1                       # 创建月份初始值为1

day = Day                           # 创建天数

mouth_31 = [1, 3, 5, 7, 8, 10, 12]  # 有31天的月份

mouth_30 = [4, 6, 9, 11]            # 有30天的月份

while mouth_num <= mouth:           # 判断    

    if mouth == 1:

        day += 0

    elif mouth_num in mouth_31:

        day += 31

    elif mouth_num in mouth_30:

        day += 30

    elif mouth_num == 2:

        day += feb

    mouth_num = mouth_num + 1

print("%d" % day)

'''

Demo21 剪刀石头布 I

题目描述

计算机随机产生一个数字0、1和2分别表示剪刀、石头和布

用户输入数字0、1或2,输出用户赢、计算机赢或平局

输入输出描述

输入数字0、1或2

输出有三行,第一行输出计算机出的啥,第二行输出用户出的啥,第三行输出结果

示例1

输入:

0

输出:

计算机出的 石头

用户出的 剪刀

计算机赢

示例2

输入:

1

输出:

计算机出的 剪刀

用户出的 石头

用户赢

示例3

输入:

2

输出:

计算机出的 布

用户出的 布

平局

'''

'''

import random

computer_choice = random.randint(0, 2)             #取随机数


 

user_choice = int(input())


 

gesture_map = {0: '剪刀', 1: '石头', 2: '布'}      #建立数组

print(f"计算机出的 {gesture_map[computer_choice]}")

print(f"用户出的 {gesture_map[user_choice]}")


 

if computer_choice == user_choice:

    print("平局")

elif (computer_choice - user_choice == 1) or (computer_choice - user_choice == -2):

    print("计算机赢")

else:

    print("用户赢")

    '''

import random

computer_choice = random.randint(0, 2)             #取随机数

user_choice = int(input())

if computer_choice == 0:                           #判断

    computer_choice == "剪刀"

elif computer_choice == 1:

    computer_choice == "石头"

else:

    computer_choice == "布"


 

if user_choice== 0:

    user_choice == "剪刀"

elif user_choice == 1:

    user_choice == "石头"

else:

    user_choice == "布"


 

print("计算机出的",computer_choice,sep="")

print("用户出的 ",user_choice,seq = "")


 

if computer_choice == user_choice:

    print("平局")

elif (computer_choice - user_choice == 1) or (computer_choice - user_choice == -2):

    print("计算机赢")

else:

    print("用户赢")

'''Demo22 三角形的周长

题目描述

输入三角形三边的长度,如果输入合法则计算周长并输出结果;否则输出非法

如果任意两边之和大于第三边则输入都是合法的

输入输出描述

输入三个数据表示三边,数据之间用空格分隔

输出三角形的周长,如果非法则输出非法

示例1

输入:

1 1 1

输出:

3

示例2

输入:

1 3 1

输出:

非法'''

print("输入:")

a, b, c = map(int, input().split())

if  a + b >= c and a + c >= b and b + c >= a:     #判断

    print("输出:" ,  a + b + c)

else:

    print("非法")

'''Demo23 一周的星期几

题目描述

泽勒的一致性是一个由泽勒开发的算法,用于计算一周的星期几,公式如下:

    h = (day + ((26 * (m + 1)) // 10) + k + k // 4 + j // 4 + 5 * j) % 7

(1)是指一周的星期几(0表示星期六、1表示星期天、...、6表示星期五)

(2)q 是一个月的哪一天

(3)m是月份(3表示三月、4表示四月、...、12表示十二月),其中一月和二月都是按照前一年的13

月和14月来计数的,所以还得把年份改为前一年

(4)是世纪数,即 year /100

(5)是一个世纪的某一年,即year%100

(6)为向下取整符号

输入输出描述

输入年、月、日三个数据,数据之间用空格分隔

输出该日是周几

示例1

输入:

2013 1 25

输出:

星期五

示例2

输入:

2012 5 12

输出:

星期六

'''

print("输入")

year , month , day = map(int,input().split())

m =0

if month == 1 or month == 2:      #判断 一月和二月都是按照前一年的13月和14月来计数的,所以还得把年份改为前一年

    m = month + 1

    year -= 1

elif month != 1 and month != 2:

    m = month

    year = year

j = year // 100

k = year % 100

h = (day + ((26 * (m + 1)) // 10) + k + k // 4 + j // 4 + 5 * j) % 7

print("输出:")

if h == 0:

    print("星期六")

elif h == 1:

    print("星期天")

elif h == 2:

    print("星期一")

elif h == 3:

    print("星期二")

elif h == 4:

    print("星期三")

elif h == 5:

    print("星期四")

elif h == 6:

    print("星期五")

'''Demo24 直线的交点

题目描述

直线A上的两个点是和,直线B上的两个点是(x3,y3)和(x4,y4)

如果两条直线有交点,可以通过解下面的线性等式找出:

(y1-y2)x -(x1 - x2)y = (y1 - y2)x1 - (x1 - x2)y1

(y3 - y4)x - (x3 - x4)y = (y3 - y4)x3 - (x3 -x4)y3

如果没有解,则表示两条直线平行

输入输出描述

输入八个数据,分别为x1 y1 x2 y2 x3 y3 x4 y4,数据之间用空格分隔

如有交点则输出交点的坐标x y,否则输出两条直线平行

示例1

输入:

2 2 5 -1 4 2 -1 -2

输出:

2.89 1.11

示例2

输入:

2 2 7 6 4 2 -1 -2

输出:

两条直线平行

'''# 从输入中获取数据

data = input().split()

# 将数据转换为整数

x1, y1, x2, y2, x3, y3, x4, y4 = map(int, data)

# 计算交点或判断直线平行的代码

x = ((y1 - y2) * x1 - (x1 - x2) * y1 - (y3 - y4) * x3 + (x3 - x4) * y3) / ((y1 - y2) - (x1 - x2) * (y3 - y4) / (x3 - x4))

y = ((y1 - y2) * x - (x1 - x2) * y1) / (y1 - y2)

if (y1 - y2) * x - (x1 - x2) * y == (y1 - y2) * x1 - (x1 - x2) * x3 - (y3 - y4) * y3:

    print(x, y)

else:

    print("两条直线平行")

'''Demo25 回文数

题目描述

输入一个三位整数,然后判断其是否为一个回文数

如果一个数从左向右和从右向左读取时是一样的,那么这个数就是回文数

输入输出描述

输入一个数字

输出Yes表示是回文数,否则输出No

示例1

输入:

121

输出:

Yes

示例2

输入:

123

输出:

No

'''

'''num = input("请输入一个三位整数:")

if num[0] == num[2]:

    print(num, "是回文数")

else:

    print(num, "不是回文数")

'''

num =int( input("请输入一个三位整数:"))

ge = num % 10

bai = num // 100 % 10

if ge == bai:

    print(num, "是回文数")

else:

    print(num, "不是回文数")

''' Demo26 两个矩形

题目描述

判断两个矩形之间的关系:包含,重叠,相离

输入输出描述

输入两行,每行四个数据,分别是矩形的中心坐标x、y和矩形的宽、高

输出两者的关系

示例1

输入:

2.5 4 2.5 43

 1.5 5 0.5 3

输出:

包含

示例2

输入:

1 2 3 5.5

 3 4 4.5 5

输出:

重叠

示例3

输入:

1 2 3 3

 40 45 3 2

输出:

相离'''

def check_rectangle_relation(rect1, rect2):

    x1, y1, w1, h1 = rect1

    x2, y2, w2, h2 = rect2

    distance = ((x1 - x2)**2 + (y1 - y2)**2)**0.5

    if w1 >= w2 and h1 >= h2 and distance < (w1 - w2) / 2:

        return "包含"

    if abs(x1 - x2) < (w1 + w2) / 2 and abs(y1 - y2) < (h1 + h2) / 2:

        return "重叠"

    return "相离"

rect1 = list(map(float, input().split()))

rect2 = list(map(float, input().split()))

print(check_rectangle_relation(rect1, rect2))

'''第2部分 循环语句

此部分重点练习:for循环语句、while循环语句、函数、字符串

Demo27 打印数字 I

题目描述

利用循环,寻找规律,打印如下数字模式:

模式A

 1

 1 2

 1 2 3

 1 2 3 4

 1 2 3 4 5

 1 2 3 4 5 6

模式B

 1 2 3 4 5 6

 1 2 3 4 5

 1 2 3 4

 1 2 3

 1 2

 1

模式C

 1

 2 1

 3 2 1

 4 3 2 1

 5 4 3 2 1

 6 5 4 3 2 1

模式D

 1 2 3 4 5 6

 1 2 3 4 5

 1 2 3 4

 1 2 3

 1 2

 1

 '''

print("模式A")

for n in range(1,7):

    for i in range(1, n+1):

        print(i, end = " ")

    print()


 

print("模式B")

for n in range(1,7):

    for i in range(1,8 - n):

        print(i, end = " ")

    print()

print("模式c")

for n  in range(6, 0, -1):

    for k in range(6 - n):

        print(" ",end =" ")

    for i in range(n, 0, -1):

        print(i, end = " ")

    print()

print("模式D")

for n in range(6, 0, -1):

    for k in range(6 - n):

        print(" ",end = " ")

    for i in range(1,n + 1):

        print(i,end =" ")

    print()

'''

Demo28 打印数字 II

题目描述

利用循环,寻找规律,打印如下数字模式:

 1

 2 1 2

 3 2 1 2 3

 4 3 2 1 2 3 4

 5 4 3 2 1 2 3 4 5

 6 5 4 3 2 1 2 3 4 5 6

 7 6 5 4 3 2 1 2 3 4 5 6 7

 '''

for n in range(1, 8):

    for x in range(1 - n, n):

            print(abs(x) + 1, end = " ")

    print()

''' Demo29 打印数字 III

题目描述

利用循环,寻找规律,打印如下数字模式:

                    1

                 1  2  1

              1  2  4  2  1

           1  2  4  8  4  2  1

        1  2  4  8  16 8  4  2  1

     1  2  4  8  16 32 16 8  4  2  1

  1  2  4  8  16 32 64 32 16 8  4  2  1

'''

 Demo30 打印菱形 I

题目描述

如下所示,是一个高度为9的菱形

    *

   * *

  * * *

 * * * *

* * * * *

 * * * *

  * * *

   * *

    *

用户输入菱形高度n,并打印出该高度下的菱形

输入输出描述

输入高度n,n为奇数

输出该高度的菱形

'''

'''

n = int(input("请输入高度:"))

for i in range(1, n+1, 2):

    print(" " * ((n-i)//2) + "* " * ((i+1)//2))

for i in range(n-2, 0, -2):

    print(" " * ((n-i)//2) + "* " * ((i+1)//2))


 

for i  in range (-m , m + 1)

    for k in range(abs(i)):

    for j om range(m + 1 - abs(i)):

    print()

'''

n = eval(input())  # 获取用户输入的n值

# 循环遍历每一行的图案

for i in range(1, n + 1):

    # 打印每一行开头的空格

    for k in range(abs(n // 2 + 1 - i)):

        print(" ", end="")

   

    # 打印每一行的星号

    for j in range(1, i + 1):

        if j <= i and i + j <= n + 1:

            print("*", end=" ")

   

    # 换行

    print()





 

'''

   #控制行数

for n in range(1, 8):

   #打印空格

   for k in range(7 - n):

      print(" ", end = " ")

   #打印数字

   for x in range(1 - n, n):

      num = 2 ** (n - 1 - abs(x))

      print("%2d" % (num), end = " ")

   print()

''' Demo31 打印菱形 II

题目描述

如下所示,是一个高度为9的菱形

         *

        * *

       *   *    

      *     *    

     *       *

      *     *  

       *   *        

        * *

         *

用户输入菱形高度n,并打印出该高度下的菱形

输入输出描述

输入高度n,n为奇数

输出该高度的菱形

'''

n = eval(input())

for i in range(1, n + 1):

    for k in range(abs(n // 2 + 1 - i )):

        print(" ", end = "")

    for j in range(1, i + 1):

        if j <= i and i + j <= n + 1:

            if j == 1 or j == i or j + i == n + 1:

                print("*", end = " ")

            else:

                print(" ", end = " ")

    print()

'''

Demo32 打印菱形 III

题目描述

如下所示,是一个高度为9的菱形

           *

          ***

         *****

        *******

       *********

        *******

         *****

          ***

           *

用户输入菱形高度n,并打印出该高度下的菱形

'''

n = eval(input())

for  i in range(1,n + 1):

    for k in range(abs(n // 2 + 1 - i)):

        print(" ", end ="")

    for j in range(1,i + 1):

        if j <= i and  i + j <= n + 1:

            print("*",end = " ")

    print()

'''

 Demo33 猜数字

题目描述

计算机随机生成一个[0,100]之间的整数,程序提示用户连续地输入数字直到它与那个随机生成的数字相

对于用户输入的数字,程序会提示它是过高还是过低

输入输出描述

每次输入一个整数

每次输出该数字是过高还是过低,如果猜中则输出猜中的数字并结束

示例

输入:50

输出:高了

输入:25

输出:低了

输入:42

输出:高了

输入:39

输出:猜中了:答案就是39

'''

import random

randNum = random.randint(0,100)

'''while Ture:

    usrNum = eval(input())

    if usrNum < randNum:

        print("小了")

    elif usrNum > randNum:

        print("大了")

    else:

        print("猜对了")

        break

'''

usrNum = eval(input())

while randNum != usrNum:

    if usrNum < randNum:

        print("小了")

    elif usrNum >randNum:

        print("大了")

    userNum = eval(input())

    print("猜对了")

''''

Demo34 最大公约数 I

题目描述

输入两个正整数,计算其最大公约数,例如4和2的最大公约数是2,16和24的最大公约数是8

输入输出描述

输入两个数字

输出最大公约数

示例1

输入:

16 24

输出:

8

示例2

输入:

7 3

输出:

1

'''

num1,num2 = input().split()

min_num  = min (num1, num2)

max_num  = max (num1, num2)

min_num = int(min_num)

max_num = int(max_num)

for num  in range(min_num, 0,-1):

    if  min_num % num == 0 and  max_num % num == 0:

        print(num)

        break

'''

Demo35 判断素数

题目描述

一个大于1的整数如果只能被正整数1和它本身整除,则它就是素数,例如2、3、5和7都是素数,而4、

6、8、9则不是

输入输出描述

输入一个大于1的正整数

输出Yes表示该数字是素数,否则输出No

示例1

输入:

9

输出:

No

示例2

输入:

11

输出:

Yes

'''

flog = True

num = eval(input())

for  n in  range(2,num // 2 + 1):

    if num %  n == 0 :

        flag = False

        break

if flag:

    print("YES")

else:

    print("NO")

'''

Demo36 最小公倍数

题目描述

输入两个正整数,计算其最小公倍数,例如4和2的最小公倍数是4,3和5的最小公倍数是15

输入输出描述:

输入两个正整数

输出最小公倍数

示例1

输入:

3 9

输出:

9

示例2

输入:

4 6

输出:

12

'''

a, b =map(int,input().split())

min_ = min (a , b)

for c in range( min_, a * b + 1):

    if c % a == 0 and c % b == 0:

        print(c)

        break

       

'''

Demo37 整数的素因子

题目描述

输入一个正整数,然后找出它所有的最小因子,也称之为素因子

输入输出描述

输入一个正整数

输出多行,每行输出一个素因子

示例1

输入:

120

输出:

2 2 2 3 5

解释:

2 * 2 * 2 *3 * 5 = 120

示例2

输入:

100

输出:

2 2 5 5

'''

num  = eval (input())

while num != 1:

    for n  in range(2, num + 1):

        if num % n == 0 :

            print(n,end = " ")

            num  = num // n

            break

'''

 Demo38 完全数

题目描述

如果一个正整数等于除了它本身之外所有正因子的和,那么这个数称为完全数

例如 6 = 3 + 2 + 1,28 = 14 + 7 + 4 + 2 + 1

输入输出描述

输入一个正整数

输出该数是否为完全数

示例1

输入:

6

输出:

Yes

示例2

输入:

9

输出:

No

'''

a =int(input())

sum = 0

for b in range(1,a // 2 + 1):

    if  a % b == 0:

        sum = sum + b

if sum == a:

    print("YES")

else:

    print("NO")

'''

Demo39 前50个素数

题目描述

打印前50个素数,每打印10个素数换行

'''

num = 2

count = 0

while count != 50:

    flag = True

    for n in range(2, num //2 +1 ):

        if num % n == 0:

            flag = False

            break

        #是素数怎么去处理

    if flag:

        print(num, end = " \t")

        count += 1

        if count % 10 == 10:

         print( )

    num += 1

'''

Demo40 计算π

题目描述

你可以使用下面的数列近似计算π

π = 4(1 - 1/3 - 1/5 - 1/7 + 1/9 - 1/11 + ... + (-1)*i+1/2i - 1)

当i越大时,计算结果越近似于π

'''

π = 0

for i in range(1, 1000):

    a = ((-1) ** (i + 1)) / (2 * i - 1)

    π += 4 * a

print(π)

'''

 Demo41 计算e

题目描述

你可以使用下面的数列近似计算e

  e = 1 + 1/1! + 1/2! + 1/3! + 1/4! + ... + 1/i!

  当i越大时,计算结果越近似于e

'''

import math

n = 10

e = 1

factorial = 1

for i in range(1, n+1):

    for j in range(1, i+1):

        factorial *= j

    e += 1 / factorial

    factorial = 1  # 重置阶乘值

print(round(e, 5))  # 输出结果并保留5位小数

'''

Demo42 剪刀石头布 II

题目描述

延伸【Demo21剪刀石头布 I】的问题,利用循环将程序改为,计算机和电脑谁先赢三次,谁就是终极胜

利者

'''

import random

a = 0  #电脑赢的次数

b = 0

while(a < 3 and b < 3):

    user_choice = int(input())                          #用户出什么

    computer_choice = random.randint(0, 2)  

    if computer_choice == 0:                           #判断

        computer_choice == "剪刀"

    elif computer_choice == 1:

        computer_choice == "石头"

    else:

        computer_choice == "布"


 

    if user_choice== 0:

        user_choice == "剪刀"

    elif user_choice == 1:

        user_choice == "石头"

    else:

        user_choice == "布"

    print("计算机出的",computer_choice,sep="")

    print("用户出的 ",user_choice,sep = "")


 

    if computer_choice == user_choice:

        print("平局")

    elif (computer_choice - user_choice == 1) or (computer_choice - user_choice == -2):

        print("计算机赢")

        a += 1

    else:

        print("用户赢")

        b += 1

if a == 3:

    print("计算机是终极大赢家")

else:

    print("用户是终极大赢家")

'''

Demo43 组合问题 I

题目描述

在数字范围[1,7]之间,任意选择两个不相同的数作为一个组合,输出每一组组合,并统计所有组合的个

注:组合(a,b)与组合(b,a)算同一种组合,只记录一次

'''

count = 0

for i in range(1, 7):

    for j in range(i+1, 8):

        print(f"组合({i},{j})")

        count += 1

print(f"总共有{count}种组合")

'''

Demo44 组合问题 II

题目描述

有1、2、3、4这个四个数字,

能组成多少个互不相同且无重复数字的三位数?分别又是多少?

'''

count = 0

for i in range(1, 5):

    for j in range(1, 5):

        for k in range(1, 5):

            if i != j and j != k and i != k:

                num = i * 100 + j * 10 + k

                print(num)

                count += 1

print(f"总共有{count}个互不相同且无重复数字的三位数")

'''

Demo45 水仙花数

题目描述

水仙花数,是一个三位数,且这个数的个位、十位和百位的立方和等于该数字本身,例如

编写程序,输出所有的水仙花数

'''

total = 0

for a in range(100,1000):

    ge =  a % 10

    shi = (a // 10) % 10

    bai = (a // 100) % 10

    if ge ** 3 + shi ** 3 + bai ** 3 == a:

        total = a

        print(total)

'''

Demo46 青蛙跳台阶

题目描述

一只青蛙,一次可以跳一个台阶或者两个台阶,现有n个台阶,问该青蛙有多少种不同的跳法?

例如:两个台阶,有两种跳法(1+1,2):四个台阶,有五种跳法(1+1+1+1,2+1+1,1+2+1,

1+1+2,2+2)

'''

n = eval (input())

if n == 1 or n == 2:

    print(n)

else:

    a = 1

    b = 2

    c = 0

    for i  in range(3, n + 1):

        c = a + b

        a = b

        b = c

    print(c)

'''

Demo47 堆叠相加

题目描述

现有堆叠相加模式

例如:其中a为2,且有5组数字

输入输出描述

输入两个数据分别为数字a和组数n

输出按照堆叠相加模式算出的和

示例

输入:

3 4

输出:

3702

解释:

3 + 33 + 333 + 3333 = 3702

'''

# 从输入中获取两个整数a和n

a, n = map(int, input().split())

# 初始化变量sum用于存储累加和,初始化变量num用于存储当前数字

sum = 0

num = 0

# 循环n次

for i in range(n):

    num = num * 10  + a  # 依次构建数字a, aa, aaa, ..., 直到第n个数

    sum += num  # 将当前构建的数字累加到sum中

# 输出最终的累加和

print(sum)

'''

Demo48 十进制转二进制

题目描述

输入一个十进制正整数,输出其二进制形式

输入输出描述

输入一个十进制正整数

输出二进制字符串

示例

输入:

9

输出:

1001

'''

n = 1

b = 0

a = int(input())

while( a != 0):

    b += (a % 2) * 10**(n-1)  # 将余数乘以相应的权重加到结果b中

    a = a // 2

    n += 1

print(b)

'''

 Demo49 二进制转十进制

题目描述

输入一个二进制字符串,输出其对应的十进制数字

输入输出描述

输入一个二进制字符串

输出十进制数字

示例

输入:

1001

输出:

9

'''

a = input()

b = 0

for char in a:

    b = b * 2 + int(char)

print(b)

'''

 Demo50 十进制转十六进制

题目描述

输入一个十进制正整数,输出其十六进制形式

输入输出描述

输入一个十进制正整数

输出十六进制字符串

示例

输入:

1233321

输出:

1e1b9

'''

num = eval(input())

s = ""

while num != 0 :

    y = num %16

    if y >= 10 :

        y = chr(ord('A') + y - 10)

    s= str(y) + s

    num = num // 16

print (s)

'''

 Demo51 十六进制转十进制

题目描述

输入一个十六进制字符串,输出其对应的十进制数字

输入输出描述

输入一个十六进制字符串

输出十进制数字

示例

输入:

1e1b9

输出:

123321

'''

# 输入一个十六进制的字符串

strings = input("请输入一个十六制字符串:")

# count记录字符串的字符个数 sum 记录和

count = 0

sum = 0

# 遍历字符串 得到该字符串的位数

for j in strings :

    count += 1

# 再次遍历字符串

for i in strings :

    # 将字符串的每个字符转换为对应的ASCII码值s

    s = ord(i)

    # 如果s小于等于57 则s代表十进制的0-9 ASCII码值(48--57)

    if s <= 57 :

    # 减去48即得到对应的十进制数

        s = s - 48

    # 如果s小于等于90 则s代表大写字母A-Z (65--95)

    elif s <= 90 :

        # 减去55即得到对应的十进制数

        s = s - 55

    # 对于小写字母a-z (97--122)

    else :

        # 减去87即得到对应的十进制数

        s = s - 87

    # 每一位的十六进制数所代表的十进制值为num

    num = s * 16 ** (count-1)

    # 每位十六进制的十进制值累加

    sum += num

    # 循环一次 对应字符乘16的count次方减一

    count -= 1

# 输出最终的十进制值

print(sum)

'''

 Demo52 最长公共前缀

题目描述

给定两个字符串 s1 和 s2 ,求两个字符串最长的公共前缀串,字符区分大小写

输入输出描述

输入两行,分别表示s1和s2

输出前缀串

示例

输入:

abcdefg

abcdhko

输出:

abcd

'''

s = ""

print("输入字符串s1与s2")

n1 = input()

n2 = input()

arr1 = list(n1)

arr2 = list(n2)

l1 = len(n1)

l2 = len(n2)

min_ = min(l1, l2)

for n in range(min_):

    if arr1[n] == arr2[n]:

        s = s + arr1[n]

print(s)

'''

 Demo53 子串出现的次数

题目描述

给定两个字符串 s1 和 s2 ,求 s2 在 s1 中出现的次数,字符区分大小写,已匹配的字符不计入下一次匹

输入输出描述

输入两行字符串,分别为s1和s2,s2的长度小于等于s1

输出s2在s1中出现的次数

示例1

输入:

ABCsdABsadABCasdhjabcsaABCasd

 ABC

输出:

3

示例2

输入:

AAAAAAAA

 AAA

输出:

2

'''

print("输s1,s2(s1,s2的长度小于等于s1)")

s1 = input()

s2 = input()

n = 0

list1 = list(s1)

list2 = list(s2)

l1 = len(s1)

l2 = len(s2)

for i in range(l2):

    if list1[i] == list2 [i]:

        n += 1

print(n)

'''

 Demo54 最长公共子串

题目描述

给定两个字符串 s1 和 s2 ,求 s1 与 s2 之间的最长公共子串,字符区分大小写

输入输出描述

输入两行字符串,分别为s1和s2

输出最长公共子串

示例

输入:

123ABCDEFG83hsad

iughABCDEFG23uy

输出:

ABCDEFG

'''

print("输入s1,s2(s1,s2的长度小于等于1000)")

s = ""

# 输入字符串s1

n1 = input()

# 输入字符串s2

n2 = input()

# 将s1拆分为字符数组

arr1 = list(n1)

# 将s2拆分为字符数组

arr2 = list(n2)

# 获取s1的长度

l1 = len(n1)

# 获取s2的长度

l2 = len(n2)

# 初始化最长公共子串的长度为0

max_len = 0

# 初始化最长公共子串的起始索引为-1

start_index = -1

# 创建一个二维数组用于存储公共子串的长度,代码将通过列表推导式创建一个二维数组,其中有l1 + 1行和l2 + 1列,每个元素初始化为0

dp = [[0] * (l2 + 1) for _ in range(l1 + 1)]

# 遍历s1和s2的字符

for i in range(1, l1 + 1):

    for j in range(1, l2 + 1):

        if arr1[i - 1] == arr2[j - 1]:

            dp[i][j] = dp[i - 1][j - 1] + 1

            if dp[i][j] > max_len:

                max_len = dp[i][j]

                start_index = i - max_len

# 根据最长公共子串的起始索引和长度提取最长公共子串

result = n1[start_index:start_index + max_len]

print(result)

'''

Demo55 检测密码

题目描述

一些网站会给密码强加一些规则:

(1)密码必须至少有8个字符

(2)密码只能包含英文字母和数字

(3)密码应该至少包含两个数字

(4)密码应该至少包含两个大写字母

如果密码符合规则,输出Yes:否则输出No

输入输出描述

输入一串密码

输出该密码是否符合规则

示例1

输入:

123456ab

输出:

No

示例2

输入:

123abcABC

输出:

Yes

'''

print("输入:")

password = input()

arr = list(password)

a = 0

b = 0

s1 = 0

s2 = 0

if len(arr) >= 8:

    a = 1

for i in arr:

    x = ord(i)

    if (x >= 48 and x <= 57) or (x >= 65 and x <= 90) or (x >= 97 and x <= 122):

        b += 1

    if x >= 48 and x <= 57:

        s1 += 1

    if x >= 65 and x <= 95:

        s1 += 1

if a == 1 and b >= 8 and s1 >= 2 and s2 >=2 :

    print("Yes")

else:

    print("No")

'''

 Demo56 回文素数

题目描述

回文素数是指一个数既是素数又是回文数,例如131既是素数也是回文数

输出显示前100个回文素数,每行显示10个

'''


 

num = 100

count = 0

while count != 100:

    flag = True

    ge = num % 10

    bai = num // 100 % 10

    for n in range(2, num // 2 + 1):

        if num % n == 0:

            flag = False

            break

    if flag and str(num) == str(num)[::-1]:

        print(num, end=" \t")

        count += 1

        if count % 10 == 0:

            print()

    num += 1

'''

Demo57 反素数

题目描述

反素数是指一个将其逆向拼写后也是一个素数的非回文数,例如17和71都是素数但不是回文数,且反转

后依旧是素数

输出显示前100个反素,每行显示10个

'''

def is_prime(num):

    # 判断一个数是否为素数

    if num < 2:

        return False

    for i in range(2, int(num**0.5) + 1):

        if num % i == 0:

            return False

    return True

def reverse_num(num):

    # 返回一个数的逆向拼写

    return int(str(num)[::-1])

reverse_primes = []  # 存储反素数的列表

num = 2

while len(reverse_primes) < 100:

    # 循环直到找到100个反素数

    if is_prime(num) and is_prime(reverse_num(num)) and num != reverse_num(num):

        # 判断是否为素数,逆向拼写是否为素数,且不是回文数

        reverse_primes.append(num)  # 将符合条件的数添加到列表中

    num += 1

# 按照每行显示10个的格式输出反素数

for i in range(0, 100, 10):

    print(*reverse_primes[i:i+10], sep="\t")

'''

Demo58 双素数

题目描述

双素数是指一对差值为2的素数,例如3和5就是一对双素数,5和7也是一对双素数

输出显示小于1000的双素数

'''

def is_prime(num):

    # 判断一个数是否为素数

    if num < 2:

        return False

    for i in range(2, int(num**0.5) + 1):

        if num % i == 0:

            return False

    return True

list = []  # 存储双素数的列表

for num in range(3, 1000):  # 遍历小于1000的数

    if is_prime(num) and is_prime(num + 2):  # 判断当前数和当前数加2是否都为素数

        list.append((num, num + 2))  # 将符合条件的双素数对添加到列表中

# 输出小于1000的双素数

for pair in list:

    print(pair[0], pair[1])

'''

Demo59 梅森素数

如果一个素数可以写成2 ** p - 1,,其中p是某个正整数,那么这个素数就称作梅森素数

输出p≤31的所有梅森素数

'''

def is_prime(num):

    # 判断一个数是否为素数

    if num < 2:

        return False

    for i in range(2, int(num**0.5) + 1):

        if num % i == 0:

            return False

    return True

mersenne_primes = []  # 存储梅森素数的列表

for p in range(1, 32):  # 遍历p从1到31

    mersenne_num = 2**p - 1  # 计算梅森数

    if is_prime(mersenne_num):  # 判断梅森数是否为素数

        mersenne_primes.append((p, mersenne_num))  # 将符合条件的梅森素数添加到列表中

# 输出p≤31的所有梅森素数

for pair in mersenne_primes:

    print(f"p={pair[0]}, Mersenne Prime={pair[1]}")

'''

Demo60 平方根的近似求法

有几种实现开平方的技术,其中一个称为巴比伦法

它通过使用下面公式的反复计算近似地得到:

nextGuess = ( lastGuess + n /lastGuess ) / 2

当nextGuess和lastGuess几乎相同时,nextGuess就是平方根的近似值

lastGuess初始值为1,如果nextGuess和lastGuess的差值小于一个很小的数,比如0.0001,就可以认为

nextGuess是n的平方根的近似值:否则,nextGuess成为下一次计算的lastGuess,近似过程继续执行

编写代码求解n的平方根的近似值

'''

def babylonian_sqrt(n):

    last_guess = 1  # 初始值为1

    next_guess = (last_guess + n / last_guess) / 2  # 第一次计算得到的近似值

    while abs(next_guess - last_guess) >= 0.0001:  # 当近似值的差值大于等于0.0001时继续迭代

        last_guess = next_guess

        next_guess = (last_guess + n / last_guess) / 2

    return next_guess

n = 25  # 要求解平方根的数

approx_sqrt = babylonian_sqrt(n)

print(f"The approximate square root of {n} is: {approx_sqrt}")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值