python的案例

1.字符串回文数

str=input("输入一个字符串:")
def hui(ste):
  hi=True
  rts=str[::-1]
  for i in range(len(rts)):
    if rts[i]!=str[i]:
      print("不是回文数!")
      hi=False
      break
  if hi is True:
    print("是回文数")  
hui(str)      

2.给定一个正整数N,找出1到N(含)之间所有质数的总和

def prime(num):#判断
    if num <= 1:
        return False
    for i in range(2, int(num ** 0.5) + 1):
        if num % i == 0:
            return False
    return True

def sum(n):#不是递归的方法
    prime_sum = 0
    for num in range(2, n + 1):
        if prime(num):
            prime_sum += num
    return prime_sum

# 测试示例
N=int(input("输入一个数:")) 
total_sum = sum(N)
print(f"1到{N}之间所有质数的总和为:{total_sum}")

3. 求  a+aa+aaa+.......+aaaaaaaaa=?其中a为1至9之中的一个数,项数也要可以指定。

def calculate_sum(a, n):
    current_term = str(a)
    total_sum = a
    for i in range(2, n + 1):
        current_term += str(a)
        total_sum += int(current_term)
    return total_sum


a = int(input("你希望是哪些数相加:") )
n = int(input("多少项:"))
result = calculate_sum(a, n)
print(f"{a}+{a}{a}+{a}{a}{a}的和为:{result}")

4.合并两个有序数组,合并后还是有序列表

def bubble_sort(arr):
    n = len(arr)
    for i in range(n - 1):
        for j in range(n - 1 - i):
            if arr[j] > arr[j + 1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]

def merge(arr1, arr2):
    merged = arr1 + arr2  
    bubble_sort(merged)  
    return merged

array1 = [1, 3, 5, 7, 9]
array2 = [2, 4, 6, 8, 10]
print("合并的数组是",array1,array2)
mergedarray = merge(array1, array2)
print("合并并排序后的数组:", mergedarray)

5.给定一个非负整数数组A,将该数组中的所有偶数都放在奇数元素之前

def sort(arr):
    left = 0
    right = len(arr) - 1

    while left < right:
        # 找到第一个奇数元素
        while arr[left] % 2 == 0 and left < right:
            left += 1

        # 找到第一个偶数元素
        while arr[right] % 2 != 0 and left < right:
            right -= 1

        # 交换奇数元素和偶数元素的位置
        if left < right:
            arr[left], arr[right] = arr[right], arr[left]
            left += 1
            right -= 1

    return arr

# 测试示例
array = [3, 1, 2, 4, 6, 5, 7, 8]
sorted_array = sort(array)
print("将偶数放在奇数元素之前的数组:", sorted_array)

6.给定一个非负整数数组A,该数组的元素都是从1~N的元素组成,现在发现其中确实一个,请找出这个确实的元素,假设我缺少45

我们这里,运用理论值去减掉实际值

def element(arr, N):
    # 计算理论上数组中所有元素的总和
    expected_sum = N * (N + 1) // 2
    print(N * (N + 1) // 2)
    actual_sum = sum(arr)
    missing = expected_sum - actual_sum
    return missing

array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 48, 49, 50]
N = 50
missing = element(array, N)
print("缺失的元素为:", missing)

7.不死兔子,每一对兔子要4个月的生长才可以繁衍

def rabbit_count(months):
    if months <= 0:
        return 0
    elif months == 1 or months == 2:
        return 1
    else:
        prev_1 = 1  
        prev_2 = 1  # 前一,两个月的兔子数量
        rabbit_count = 0

        for _ in range(2, months):
            rabbit_count = prev_1 + prev_2
            prev_2 = prev_1
            prev_1 = rabbit_count

        return rabbit_count

months = int(input("请输入月数:"))
result = rabbit_count(months)
print(f"{months}个月后的兔子数量为:{result}")

二,用户注册和购买界面

n=True
info={}
mall=False
def shop_mall():
   print("1.孙悟空:150元")
   print("3.影流之主:300元")
   print("5.时间刺客:200元") 
   print("特惠双十一!买二或以上打8折") 
   nums = list(map(int, input("#购买各个英雄的数量:").split()))
   all_price=nums[0]*150+nums[1]*300+nums[2]*200
   print("价钱是",all_price)
   return False
def admin():
  print("进入注册界面")
  print("取个用户名字")
  admin_name=input("输入名称:")
  pd=1
  while(pd==1):
     print("填写你的密码!")
     password=input("输入密码:")
     dp=check_password(password)
     if dp is False:
        print("#输入的密码必须遵守规则:")
        print("(1)密码必须至少有8个字符")
        print("(2)密码只能包含英文字母和数字")
        print("(3)密码应该至少包含两个数字")
        print("(4)密码应该至少包含两个大写字母")
        print("#重新输入")
     else:
        admin_info={"name":admin_name,"password":password}
        print("#注册成功!")
        pd=2
        return admin_info
def log_in():
  print("进入登录界面")
  ad=True
  while ad is True:
    check_admin=input("输入你的用户名:")
    c_a=info["name"]
    print(info["name"])
    if c_a!=check_admin:
      print("不存在此用户")
    else:
      ad=False 
    while ad is False:
      chk_psswd=input("输入你的密码:") 
      c_p=info["password"] 
      if c_p!=chk_psswd:
          print("#密码不正确")  
      else:
          print("#登录成功,进入商城界面~")
          return True 

def check_password(password):
    if len(password) < 8:
        print("小于8位!")
        return False
    
    count_digit = 0  
    count_upper = 0  

    for char in password:
        if char.isdigit():
            count_digit += 1
        elif char.isupper():
            count_upper += 1

    if count_digit >= 2 and count_upper >= 2:
        print("#数字或者字母小于俩个!")
        return False
    else:
        return True



while(n is True):
  print("#欢迎进入英雄联盟英雄购买界面!")
  print("输入数字进行对应操作")
  print("1.注册用户")
  print("2.登录用户")
  print("3.退出界面")
  print("4.商店界面")
  op_num=(input("输入你的操作数:"))
  if op_num=='1':
    print("注册一个新用户!")
    info=admin()
  elif op_num=='2':
    print("登录账户!")
    mall=log_in()
  elif op_num=='3':
    print("退出!")
    n=False
  elif op_num=='4':
     if mall is not True:
        print("#你还木有登录") 
     else:
        shop_mall()
  else:
    print("非法输入,请重新输入")
    

我们这里用dict,来存储用户注册后的信息,用户信息是按照全局变量存储的

再利用函数内部的bool变量来控制状态的

我这里每次结束一个功能都会重新进入主界面,显得比较臃肿,可以稍微改掉一些

三,一些编程题的汇总

输入一个四位整数

输出四行,第一行为个位,第二行为十位,第三行为百位,第四行为千位
num=int(input("please enter a thousand num:"))
for x in range(4):
  print(str(num//(10**x)%10))


**题目描述** 
输入你所在的时区,并输出当前的时间 
**输入输出描述** 
输入时区,如东八区为8,西五区为-5 
import datetime
timezone =int (input("please input ur timezone:"))
turetime =datetime.datetime.utcnow()#格林尼治时间
admin_time= turetime +datetime.timedelta(hours=timezone)
admin_time=admin_time.strftime("%H:%M:%S")
print(admin_time)


一元二次方程$ax^2+bx+c=0 (a != 0)$的解可以使用下面的公式计算
$$
r_1=\frac{-b+\sqrt{b^2-4ac}}{2a},r_2=\frac{-b-\sqrt{b^2-4ac}}{2a}
$$
其中$b^2-4ac$称为判别式,如果它为正,则方程有两个实数解;为零,方程只有一个实数解;为负,没有实数解
# 模式A
for i in range(1, 7):
    for j in range(1, i+1):
        print(j, end=' ')
    print()

# 模式B
for i in range(6, 0, -1):
    for j in range(1, i+1):
        print(j, end=' ')
    print()

# 模式C
for i in range(1, 7):
    print(' ' * (6-i), end='')
    for j in range(i, 0, -1):
        print(j, end=' ')
    print()

# 模式D
for i in range(6, 0, -1):
    print(' ' * (6-i), end='')
    for j in range(1, i+1):
        print(j, end=' ')
    print()


给定某年、某月、某日的一个日期,计算该日是今年中的第几天 
是不是闰年
def is_year(year):
    # 判断是否为闰年
    if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
        return True
    return False
def mounth(year,mounth,day):
    mounthdat=[31,28,30,31,30,31,31,30,31,30,31]
    if is_year(year):
      mounthdat[1]=29
    doy=sum(mounthdat[:mounth-1])+day
    return doy
year, month, day = map(int, input().split())
re = mounth(year, month, day)
print(re)


石头剪刀布
import random

def get_computer_choice():
    # 计算机随机选择剪刀、石头或布
    choices = ["剪刀", "石头", "布"]
    computer_choice = random.choice(choices)
    return computer_choice

def winner(user_choice, computer_choice):
    # 判断用户和计算机的选择,确定胜负关系
    if user_choice == computer_choice:
        return "平局"
    elif (user_choice == "剪刀" and computer_choice == "布") or (user_choice == "石头" and computer_choice == "剪刀") or (user_choice == "布" and computer_choice == "石头"):
        return "用户赢"
    else:
        return "计算机赢"

user_choice = input("请输入数字 0、1 或 2 分别表示剪刀、石头或布:")
choices = ["剪刀", "石头", "布"]
user_choice = choices[int(user_choice)]
computer_choice = get_computer_choice()
print("计算机出的", computer_choice)
print("用户出的", user_choice)
print(winner(user_choice, computer_choice))


回文数
def is_palindrome(number):
    number_str = str(number)
    if number_str == number_str[::-1]:
        return "Yes"
    else:
        return "No"

number = int(input("请输入一个三位整数:"))
result = is_palindrome(number)
print(result)



有一堆硬币,每次只能拿一个或者两个,求最少多少次可以拿完硬币
[10, 8, 5, 3, 27, 99]
cn=[10,8,5,3,27,99]
x=0
for i in cn:
  if i%2==0:
    x=x+i//2
  else:
    x=x+i//2
    x=x+1
y=10+8+5+3+27+99
print("最少为:%d,"%x)
print("最多为:",y)


素数
def is_prime(number):
    if number <= 1:
        return "No"
    for i in range(2, int(number**0.5) + 1):
        if number % i == 0:
            return "No"
    return "Yes"

number = int(input("请输入一个大于1的正整数:"))
result = is_prime(number)
print(result)

公倍数
def gcd(a, b):
    while b:
        a, b = b, a % b
    return a

def lcm(a, b):
    
    return (a * b) // gcd(a, b)

a, b = map(int, input("请输入两个正整数:").split())
result = lcm(a, b)
print(result)



完全数
def is_perfect_number(number):
    factors_sum = 0
    for i in range(1, number):
        if number % i == 0:
            factors_sum += i
    return factors_sum == number

number = int(input("请输入一个正整数:"))
result = is_perfect_number(number)
if result:
    print("Yes")
else:
    print("No")


青蛙
def frog_jump(n):
    if n <= 2:
        return n
    dp = [0] * (n+1)
    dp[1] = 1
    dp[2] = 2
    for i in range(3, n+1):
        dp[i] = dp[i-1] + dp[i-2]
    return dp[n]

n = int(input("请输入台阶数:"))
result = frog_jump(n)
print(result)

十进制换二进制

def decimal_to_binary(decimal):
    binary = ""
    while decimal > 0:
        remainder = decimal % 2
        binary = str(remainder) + binary
        decimal = decimal // 2
    return binary

decimal = int(input("请输入一个十进制数:"))
binary = decimal_to_binary(decimal)
print("二进制数为:", binary)

十进制换十六进制
def decimal_to_hexadecimal(decimal):
    hexadecimal = hex(decimal)[2:]  
    return hexadecimal

decimal = int(input("请输入一个十进制数:"))

hexadecimal = decimal_to_hexadecimal(decimal)

print("十六进制字符串为:", hexadecimal)

最长共同前缀

def longest(s1, s2):
    length = min(len(s1), len(s2))
    i = 0
    while i < length and s1[i] == s2[i]:
        i += 1
    return s1[:i]

s1 = input("请输入字符串 s1:")
s2 = input("请输入字符串 s2:")
result = longest(s1, s2)
print("最长公共前缀为:", result)

公次数
def count_substring(s1, s2):
    count = 0
    start = 0
    while True:
        pos = s1.find(s2, start)
        if pos == -1:
            break
        count += 1
        start = pos + len(s2)
    return count

s1 = input("请输入字符串 s1:")
s2 = input("请输入字符串 s2:")
result = count_substring(s1, s2)
print(result)

密码检测
def check_password(password):
    if len(password) < 8:
        return "No"
    
    count_digit = 0  
    count_upper = 0  

    for char in password:
        if char.isdigit():
            count_digit += 1
        elif char.isupper():
            count_upper += 1

    if count_digit >= 2 and count_upper >= 2:
        return "Yes"
    else:
        return "No"

password = input("请输入密码:")

result = check_password(password)

print(result)

回文素数
def is_prime(number):
    if number <= 1:
        return False
    for i in range(2, int(number**0.5) + 1):
        if number % i == 0:
            return False
    return True

def is_palindrome(number):
    number_str = str(number)
    return number_str == number_str[::-1]

count = 0
number = 2

while count < 100:
    if is_palindrome(number) and is_prime(number):
        print(number, end=' ')
        count += 1
        if count % 10 == 0:
            print()
    number += 1

反转素数
def is_prime(number):
    if number <= 1:
        return False
    for i in range(2, int(number**0.5) + 1):
        if number % i == 0:
            return False
    return True

def is_antiprime(number):
    number_str = str(number)
    reversed_str = number_str[::-1]#反转
    return is_prime(number) and is_prime(int(reversed_str))

count = 0
number = 2

while count < 100:
    if is_antiprime(number):
        print(number, end=' ')
        count += 1
        if count % 10 == 0:
            print()
    number += 1

双素数
def is_prime(number):
    if number <= 1:
        return False
    for i in range(2, int(number**0.5) + 1):
        if number % i == 0:
            return False
    return True

def twin_primes():
    twin_primes_list = []
    for number in range(2, 1000):
        if is_prime(number) and is_prime(number + 2):
            twin_primes_list.append((number, number + 2))
    return twin_primes_list

result = twin_primes()

for pair in result:
    print(pair[0], pair[1])






还有打印题和其他的简单的加减乘除题可以看我其他文章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值