练习30——60

Demo31

n = eval(input())                              

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

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

        print(" ", end = "")

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

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

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

                print("*", end = " ")

            else:

                print(" ", end = " ")

    print()        

Demo32

n = eval(input())                                

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

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

        print(" ", end = "")

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

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

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

                print("*", end = " ")

            else:

                print(" ", end = " ")

    print()  

Demo33

import random

num = random.randint(0,100)

while True:

    n = eval(input())

    if n > num:

        print("高了")

    elif n < num:

        print("低了")

    else:

        print("猜中了")

        break

Demo34

num1, num2 = eval(input())

min_num = min(num1, num2)                               #找到两数中最小的

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

    if num1 % num == 0 and num2 % num == 0:      #最小数从尾到头找最大公约数

        print(num)                               #两数同时取余等于0的则是最大公约数

        break                              

Demo35       

num = eval(input())

flag = True    #哨兵:监控状态变化 此时默认为素数

for n in range(2, num // 2 + 1):             #只用验证除1外是否还有其他数可以整除num

    if num % n == 0:

        flag = False

        break

if flag:                     #flag为True

    print("是素数")

else:

    print("不是素数")

Demo36

最小公倍数

num1, num2 = eval(input())

min_num = min(num1, num2)                               #找到两数中最小的

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

    if num1 % num == 0 and num2 % num == 0:      #最小数从尾到头找最大公约数                            

        n = num1 * num2 / num

        print(n)

        break                                              

#最小公倍数等于两数之积除以最大公约数

Demo37

#整数的素因子

n=eval(input())

i=2         #我们从二开始验证如120%2

while True:

    if n % i == 0:

        print(i, end = ",")

        n /= i

    else:

        i += 1

    if n == 1:

        break

Demo38

#完全数

#判断一个正整数是不是完全数

input_a =input()

a = int(input_a)

count = 1

suma = 0

while count <= a/2:

    if a % count == 0:

        suma = suma + count

        count = count + 1

    else:

        count = count + 1

if a == suma:

    print("Yes")

else:

    print("No")

Demo39

num = 2

count = 0

while count != 50:

    flag = True

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

        if num % n == 0:

            flag = False

    if flag:                    

        count += 1

        print(num, end = "\t")

        if count % 10 == 0:

            print()

    num += 1

Demo40

i = eval(input())

PI = 0

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

    PI += (-1) ** (j + 1) / (2 * j - 1)

PI *= 4

print(PI)

Demo41

i = eval(input())

tatal = 1

n = 1

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

    for k in range(2, j + 1):

        n = 1 / k * n

    tatal += n

    n = 1

print(tatal)

Demo42

import random

count1 = 0 #用户赢的次数

count2 = 0 #电脑赢的次数

while count1 < 3 and count2 < 3:

    randNum = random.randint(0,2)

    print(randNum)

    userNum = int(input())

    if randNum == 0 and userNum == 1:

        count1 += 1

        print("用户赢")

    elif randNum == 0 and userNum == 2:

        count2 += 1

        print("电脑赢")

    elif randNum == 0 and userNum == 0:

        print("平局")

    if randNum == 1 and userNum == 1:

        print("平局")

    elif randNum == 1 and userNum == 2:

        count1 += 1

        print("用户赢")

    elif randNum == 1 and userNum == 0:

        count2 += 1

        print("电脑赢")

    if randNum == 2 and userNum == 1:

        count2 += 1

        print("电脑赢")

    elif randNum == 2 and userNum == 2:

        print("平局")      

    elif randNum == 2 and userNum == 0:

        count1 += 1

        print("用户赢")

if count1 == 3:

    print("用户赢")

else:

    print("电脑赢")

Demo43

count = 0

for i in range(1, 8):

    for j in range(i, 8):

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

        count += 1

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

Demo44

#组合问题||

list = [1, 2, 3, 4]

add = 0

for x in list:  #对列表进行遍历,提取数字放入 x 中作为三位数的第一位

    for y in list:  #对列表进行遍历,提取数字放入 y 中作为三位数的第二位

        for z in list:  #对列表进行遍历,提取数字放入 z 中作为三位数的第三位

            #对遍历的三个数字进行判断 若重复则不输出退出 ,若三个数字不重复则进行输出

            if (x != y) and (x != z) and (y != z):  

                add += 1

                print(x,y,z,end= "|")

print("一共有",add,"个")

Demo45

#水仙花数

for n in range(0, 100000):

    i = n // 100

    j = n // 10 % 10

    k = n % 10

    if n == i ** 3 + j ** 3 + k ** 3:

        print(n)

Demo46

#青蛙跳台阶           规律:除了第一二个台阶 后面的台阶数等于前两个台阶数之和

a = 1

b = 2

c = 3

n = eval(input())

if n == 1 or n == 2:  

    print(n)                  

else:        

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

        a = b                #将a,b,c位置往后移

        b = c

        c = a + b

    print(c)

Demo47

#堆叠相加

a, h = eval(input())

sum = 0

num = 0

for i in range(h):

    num = num * 10 + a

    sum += num

print(sum)

Demo48

a = eval(input('请您输入十进制数:'))

m = ''

while a > 0:

    m += str(a%2)  #a对2求余,添加到字符串m最后

    a = a // 2

print(m[::-1])   #反向输出

Demo49

num = input("请输入一个二进制:")

sum = 0

length = len(num)

for x in range(length):

    sum += int(num[length-1-x]) * pow(2, x)

print(sum)

Demo50

num = eval(input())

s = ""

while num != 0:

    y = num % 16

    if y > 10:

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

    s = str(y) + s

    num = num // 16

print(s)

Demo51

#十六进制转十进制

num = input()

s = 0

count = 0

sum = 0

for j in num:

    count += 1

for i in num:

    s = ord(i)

    if s <= 57:                #转换数字

        s = s - 48

    else:            #转换字母

        s = s - 55

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

    sum += num1

    count -= 1

print(sum)

Demo52

#最长公共前缀

s1 = (input("请输入第一个字符串:"))

s2 = (input("请输入第二个字符串:"))

strSame = ""

minLen = min((len(s1), len(s2)))

for i in range(minLen):

    if s1[i] == s2[i]:

        strSame += s1[i]

print(strSame)

Demo53

#子串出现的次数
s1 = (input("请输入父字符串:"))
s2 = (input("请输入子字符串:"))
count = 0
for i in range(0, len(s1),len(s2)):
    if s1[i : i + len(s2)] == s2:
        count += 1
print(count)

Demo54

s1 = input()
s2 = input()
m, n = len(s1), len(s2)  
dp = [[0] * (n + 1) for _ in range(m + 1)]
max_length = 0
end_index = 0
 
for i in range(1, m + 1):
    for j in range(1, n + 1):
        if s1[i - 1] == s2[j - 1]:
            dp[i][j] = dp[i - 1][j - 1] + 1
            if dp[i][j] > max_length:
                max_length = dp[i][j]
                end_index = i - 1  
        else:
            dp[i][j] = 0
 
longest_substring = s1[end_index - max_length + 1: end_index + 1]
print(longest_substring)

Demo55

password = input()
length = len(password)
num_count = 0
uppercase_count = 0
for i in password:
    if i >= '0' and i <= '9':
        num_count += 1
    elif i >= 'A' and i <= 'Z':
        uppercase_count += 1
if length < 8:
    print("No")
elif num_count < 2:
    print("No")
elif uppercase_count < 2:
    print("No")
#判断是否有字母或者数字
elif not all(c.isalpha() or c.isdigit() for c in password):
    print("No")
else:
    print("Yes")

Demo56

count = 0

num = 10

while count < 100:

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

        if num % i == 0:

            break

    else:

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

            print(num , end = "\t")

            count += 1

            if count % 10 == 0:  #换行

                print()

    num += 1

Demo57

num = 2
count = 0
while count < 100:
    flag1 = True
    flag2 = True
    for n in range(2, num // 2 + 1):
        if num % n == 0:
            flag1 = False
            break
    
    str_num = str(num)
    restr_num = str_num[::-1]
    re_num = int(restr_num)
    for i in range(2, re_num // 2 + 1):
        if re_num % i == 0:
            flag2 = False
            break      
    if flag1 and flag2 and num > 10: 
        print(num, end = "\t")
        count += 1
        if count % 10 == 0:
            print()
    num += 1

Demo58

num1 = 2
count = 0
while count < 1000:
    flag1 = True
    flag2 = True
    for n in range(2, num1 // 2 + 1):
        if num1 % n == 0:
            flag1 = False
            break
    
    for i in range(2, num1 // 2 + 1):
        num2 = num1 + 2
        if num2 % i == 0:
            flag2 = False
            break      
    if flag1 and flag2: 
        print(num1, end = "\t")
        count += 1
        if count % 10 == 0:
            print()
    num1 += 1

Demo59

p = 2
while p <= 31:
    num = 2 ** p - 1
    for i in range(2, int(num ** 0.5) + 1):
        if num % i == 0:
            break
    else:
        print(num)
    p += 1

Demo60

n = eval(input())
nextGuess = 0
lastGuess = 1
sqrt_n = 0
while True:
    nextGuess = (lastGuess + n / lastGuess) / 2
    if abs(nextGuess - lastGuess) < 0.0001:
        sqrt_n = nextGuess
        break
    else:
        lastGuess = nextGuess
print(sqrt_n)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值