演算法專項-基礎100題

Gsupl.落浅~發表於2024-09-01

題目1:求和

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

題目2:偶數奇數列印

list=[]
for i in range(1,100):
    if i%2==0:#if%2!=表示奇數
        list.append(i)
for i in list:#list轉換為str
    print(i,end=' ')

題目3:偶數奇數求和

sum=0
for i in range(1,100):
    if i%2==0:
        sum+=i
print(sum)

題目4:判斷素數

(1)素數就是除了1和本身之外無其他自然數整除;演算法核心就是判斷該自然數是否能被除1和本身之外的其他數整除

a=int(input())
for i in range(2,a+1):
    if a%i==0:
        print("不是素數")
    else:
        print("是素數")
    break

題目5:求階乘

#非遞迴
a=int(input())
sum=1
for i in range(1,a+1):
    sum*=i
print(sum)

題目5:求圓面積和周長

import math
r=int(input())
pi = math.pi
a=pi*r*2
s=pi*r**2
print("面積:%.2f"%a)
print("周長:%.2f"%s)

題目6:求三角斜邊長

import math
a,b=map(int,input().split())
c=math.sqrt(a**2+b**2)
print(int(c))

題目7:排序

a,b,c=map(int,input().split())
list=[a,b,c]
list1=sorted(list)
for i in list1:
    print(i,end=' ')

題目8:找出區間內素數

(1)區間為[a,b]

def prinme(n):
    flag = True#預設認為為素數
    for i in range(2, n):
        if n % i == 0:
            flag = False
            break
    return flag

a,b = map(int, input().split())
list=[]
for n in range(a,b+1):
    if prinme(n):
        list.append(n)
print(list)

題目9:4位數排序

(1)四個數字組合成互不重複的三位數字;就是巢狀三層迴圈分別表示不同的位置;然後進行排列組合

for i in range(1,5):
    for j in range(1,5):
        for m in range(1,5):
            if i!=j and i!=m and j!=m:
                print(i,j,m)

題目10:"99乘法表"

(1)核心就是根據乘法表的特性進行編寫(第一行有1列;第二行有2列;以此類推)

for i in range(1,10):
    print()
    for j in range(1,i+1):
        print(f"{i}*{j}={i*j}",end=" ")

題目11:水仙花數

(1)水仙花數是一個三位數;各位數立方之和等於該數本身

for i in range(100, 1000):
    a = i % 10          # 獲取個位數字
    b = (i % 100) // 10 # 獲取十位數字
    c = i // 100        # 獲取百位數字
    if a*a*a + b*b*b + c*c*c == i:
        print(f"水仙花數:{i}")

題目12:反向輸出四位數

a,b,c,d = map(int,input().split())
list=[a,b,c,d]
list1=list[::-1]
for i in list1:
    print(i,end=' ')

題目13:輸入字元;判斷是否為字母

a=input
result=a.isalpha()
if result:
    print("是字母")
else:
    print("不是字母")

題目14:判斷三角形

a<=0 or b<=0 or c<=0 #資料不合法
a+b>c and a+c>b and b+c>a #滿足條件

題目15:判斷完數

(1)特徵:這個數恰好等於除了它之外的因子之和

for i in range(1,1000):#1000以內的數
    sum=0
    for j in range(1,i):#除了它之外的因子
        if i%j==0:
            sum+=j
    if sum==i:
        print(i)

題目16:海倫公式

a,b,c = map(int,input().split())
p=(a+b+c)/2
s=((p*(p-a)*(p-b)*(p-c))**0.5)
print(s)
#或者使用math.sqrt代替**0.5

題目17:判斷某年某天

import datetime
year, month, day = map(int, input("請輸入日期(格式:YYYY-MM-DD): ").split('-'))
yuandan =datetime.datetime(year, 1, 1)
now = datetime.datetime(year,month,day)
days = (now - yuandan).days
print("距離元旦還有{}天".format(days))

題目18:斐波那切數列

(1)[1,1,2,3,5,8,13....]

list=[1,1]
for i in range(1,10):
    list.append(list[-1]+list[-2])
print(list)

題目19:列表複製

(1)將一個列表的資料複製到另一個列表當中

#直接複製法-淺複製
#深複製
import copy
list=[1,2,3,4]
list1=copy.copy[list]

題目20:暫停後輸出

import time
time.sleep(5)#程式休眠5秒
print("gsupl")

題目21:成績if語句

score=int(input("請輸入成績"))
if score>=90:
    print("A")
elif 60<=score<90:
    print("B")
else:
	print("C")

題目22:統計字元

string=input("請輸入字串")
char=0
number=0
space=0
other=0
for i in string:
    if i.isalpha():
        char+=1
    elif i.isdigit():
        number+=1
    elif i.isspace():
        space+=1
    else:
        other+=1
print(f"{char}{space}{number}{other}")

題目23:落體反彈問題

n=100
count=0
list=[]
while count<10:
    if count%2==0:
        list.append(n)
        count+=1
        continue
    else:
        n=n/2
        list.append(n)
        count+=1
print(list)

題目24:猴子吃桃問題

(1)猴子第一天摘了若干個桃子;第一天吃了一半+1;以此類推;到第10天早上剩一個桃子了!

#逆推過程成就是當前的桃子+1乘2
sum=1#初始桃子的數量
for i in range(1,10):#表示1-9天的天數
    total=(sum+1)*2
    sum=total
print(sum)

題目25:指定數列的和

(1)1/2 3/2 5/3 8/5 13/8 21/13;求前20項的和;分子分母分開進行計算

sum=0
up=2
down=1
for i in range(20):
    sum+=up/down
    t=down
    down=up
    up=up+t
print(sum)

題目26:求乘階和

(1)1!+2!+3!+...+20!的和

import math
sum=0
for i in range(1,21):
    sum+=math.factorial(i)
print(sum)

題目27:年齡急轉彎

#遞迴函式
def func(n):
    if n==1:
        return 10
    else:
        return func(n-1)+2

print(func(5))

題目28:判斷迴文數

(1)特徵:正序和反序相同

a=input("請輸入字串:")
a=str(a)
b=a[::-1]
if a==b:
    print("是迴文串")
else:
    print("不是迴文串")

題目29:判斷星期幾

#簡單的迴圈判斷

題目30:相反列表輸出

#方法1;使用reverse()方法-->list.reverse()
#方法2:使用切片進行反轉-->list1=list[::-1]

題目31:數字排序

(1)將輸入的資料轉換成列表使用sort()方法進行排序,split()方法會將傳輸進來的資料存字元型別轉化為列表型別

a=input().split()
a.sort()
print(a)

題目32:3*3矩陣主對角元素和

a=[]
sum=0
for i in range(3):
    a.append([])
    for j in range(3):
        data=int(input(f"請輸入第{i+1} 行 第{j+1} 列的數字:"))
        a[i].append(data)
        if i==j:
            sum+=a[i][j]
print(a)
print(sum)

題目33:有序列表插入資料

list=[1,2,3,4,5,6,7,8,9,10]
data=int(input())
list.append(data)
list.sort()
print(list)

題目34:交換變數值

(1)中間變數

a,b=1,2
temp=a
a=b
b=temp
print(a,b)

題目35:產生隨機數

import random
a=random.randint(1,100)#生成1-100以內的隨機數
print(a)

題目36:匿名函式

a=lambda x,y:x+y
print(a(1,2))

題目37:溫度單位轉化

a=int(input('攝氏度請按1,華氏度請按2:'))
if a==1:
    b=float(input('請輸入攝氏度:'))
    c=(b*9/5)+32    
    print('華氏度為:',c)
elif a==2:
    b=float(input('請輸入華氏度:'))
    c=(b-32)*5/9
    print('攝氏度為:',c)    
else:
    print('輸入錯誤,請重新輸入!') 

題目38:按位與

print(3 & 34)

題目39:按位或

print(3|7)

題目40:按位異或

(1)相同為0,不同為1

print(3^9)

題目41:按位取反

print(~10)

題目42:字串的長度

#方法1;使用函式
len(str)
#方法2;for迴圈遍歷,conut+=1

題目43:楊輝三角

a = []
for i in range(10):
    a.append([])  # 建立10個空列表
    for j in range(i + 1):
        if j == 0 or j == i:
            a[i].append(1)  # 將第i行的第一個和最後一個元素設定為1
        else:
            a[i].append(a[i-1][j-1] + a[i-1][j])  # 其他元素為上一行對應元素之和
for i in range(10):
    for j in range(i + 1):
        print(a[i][j], end=' ')
    print()

題目44:查詢字串

a="hello world"
b="world"
pint(a.find(b))#查詢子串起始位置

題目45:猜數字遊戲

import random
target = random.randint(1, 100)
count=0
while count<7:
    input_num = int(input("請輸入一個數字:"))
    if  input_num == target:
        print("你猜對了")
        break
    elif input_num > target:
        print("你猜大了,請重新輸入")
        count+=1
    else:
        print("你猜小了,請重新輸入")
        count+=1
else:
    print("你已經猜錯7次,遊戲結束")

題目45:統計字元次數

str = "Hello, World!"
a = -1
mp = dict()
for i in str:
    if i in mp:
        mp[i] += 1
    else:
        mp[i] = 1
for i in range(len(str)):
    if mp[str[i]] == 1:
        a = i
        break
print(a)

題目46:最大公因數

def func(a,b):
    if a==b:
        return a
    num=min(a,b)
    while a%num!=0 or b%num!=0:
        num-=1
    return num
print(func(12,18))

題目47:替換空格

str="hello world"
str1=str.replace(" ","@")
print(str1)
#或者進行for迴圈遍歷進行替換

題目48:快樂數

def change(x):
    sum=0
    while x>0:
        j=x%10#取出最後一位數字
        sum+=j*j
        x//=10#去掉最後一位數字
    return sum
def happynumber(n):
    while n>9:
        n=change(n)
    if n==1:
        return True
    else:
        return False    
print(happynumber(19))

題目49:立方根

import math
def func(n):
    result=math.pow(n,1/3)
    return int(result)
print(func(125))

題目50 最長公共字首

相關文章