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])