python个人练习(50-)
#50.最大公因数
#输入
def func1(a, b):
num = min(a, b)
if a == b:
return a
while a % num != 0 or b % num != 0:
num -= 1
return num
def func2(a, b):
while b != 0:
a, b = b, a % b
return a
while True:
try:
a = int(input("请输入第一个正整数:"))
b = int(input("请输入第一个正整数:"))
if a < 1 or b < 1:
print("请输入正整数!")
continue
print(func1(a, b))
print(func2(a, b))
except ValueError:
print("请输入有效的数")
#输出
# 请输入第一个正整数:42
# 请输入第一个正整数:21
# 21
# 21
# 请输入第一个正整数:1
# 请输入第一个正整数:1
# 1
# 1
# 请输入第一个正整数:25
# 请输入第一个正整数:14
# 1
# 1
# 请输入第一个正整数:33
# 请输入第一个正整数:36
# 3
# 3
# 请输入第一个正整数:-2
# 请输入第一个正整数:4
# 请输入正整数!
# 请输入第一个正整数:,,
# 请输入有效的数
#51.数组里面没有出现过的数
#输入
def find_missing_numbers(nums):
n = len(nums)
# 创建一个集合来存储所有出现过的数字
present_numbers = set(nums)
# 遍历 1 到 n 的范围,检查哪些数字不在集合中
missing_numbers = [i for i in range(1, n + 1) if i not in present_numbers]
return missing_numbers
while True:
try:
# 获取用户输入,并将其转换为整数列表
user_input = input("请输入一个数字列表(用空格分隔每个数字):")
List = [int(num) for num in user_input.split()]
print("您输入的列表是:", List)
missing = find_missing_numbers(List)
print("Missing numbers:", missing)
except ValueError:
print("请输入有效的列表")
#输出
# 请输入一个数字列表(用空格分隔每个数字):2 4 7 1 1 1 1
# 您输入的列表是: [2, 4, 7, 1, 1, 1, 1]
# Missing numbers: [3, 5, 6]
# 请输入一个数字列表(用空格分隔每个数字):2 2 3 5 6 7 8
# 您输入的列表是: [2, 2, 3, 5, 6, 7, 8]
# Missing numbers: [1, 4]
# 请输入一个数字列表(用空格分隔每个数字):, 4 6 6 6 6 6 6
# 请输入有效的列表
#52.替换空格
#输入
while True:
try:
a = input("请输入一串字符串:")
a = a.replace(" ", "%")
print(a)
except ValueError:
print("请输入有效的数!")
#输出
# 请输入一串字符串:dewjkdk ewjd ew fwjke fw
# dewjkdk%ewjd%ew%%fwjke%fw
# 请输入一串字符串:121 ewf3 dk4 e
# 121%ewf3%dk4%%e
# 请输入一串字符串:,,, f ,d
# ,,,%f%,d%
#53.快乐数
#输入
def kuaileshu(n, seen=None):
if seen is None:
seen = set() # 初始化一个集合用于记录已出现的数字
b = list(n) # n 应该是字符串类型
total = 0
for i in b:
total += int(i)**2
# print(total)
# print(seen)
if total == 1:
return "是快乐数"
elif total in seen:
return "不是快乐数" # 如果结果重复出现,说明进入循环,不是快乐数
else:
seen.add(total) # 将当前结果加入集合
return kuaileshu(str(total), seen) # 递归调用时传入字符串和集合
while True:
try:
n = int(input("请输入一个正整数:"))
if n < 1:
print("输入不是正整数!")
continue
result = kuaileshu(str(n)) # 第一次调用时将输入转换为字符串
print(result)
except ValueError:
print("请输入有效的数!")
#输出
# 请输入一个正整数:,给
# 请输入有效的数!
# 请输入一个正整数:-1.4
# 请输入有效的数!
# 请输入一个正整数:-24
# 输入不是正整数!
# 请输入一个正整数:46
# 不是快乐数
# 请输入一个正整数:7
# 是快乐数
# 请输入一个正整数:101
# 不是快乐数
# 请输入一个正整数:43
# 不是快乐数
# 请输入一个正整数:48594
# 不是快乐数
#54.立方根
#输入
import math
while True:
try:
a = int(input("请输入一个正整数:"))
if a < 1:
print("输入不是正整数!")
continue
result = int(pow(a, 1/3))
print(f"{a}的立方根是(向下取整):{result}")
except ValueError:
print("请输入有效的数")
#输出
# 请输入一个正整数:27
# 27的立方根是(向下取整):3
# 请输入一个正整数:87
# 87的立方根是(向下取整):4
# 请输入一个正整数:999
# 999的立方根是(向下取整):9
# 请输入一个正整数:0
# 输入不是正整数!
# 请输入一个正整数:-1
# 输入不是正整数!
# 请输入一个正整数:,.
# 请输入有效的数
#55.最长公共前缀
#输入
def longest_common_prefix(strs):
if not strs:
return "" # 处理空列表
shortest = min(strs, key=len) # 找到最短字符串
for i, char in enumerate(shortest):
for other in strs:
if other[i] != char:
return shortest[:i] # 遇到不匹配字符则返回当前前缀
return shortest # 全部匹配则返回最短字符串本身
while True:
try:
user_input = input("请输入一个字符串列表(用空格隔开):")
input_list = user_input.split()
print(input_list)
if not input_list:
print("输入为空,请重新输入!")
continue
result = longest_common_prefix(input_list)
if result == "":
print("无公共前缀")
else:
print("最长公共前缀:", [result])
except Exception as e:
print(f"发生错误: {e},请检查输入并重试!")
#输出
# 请输入一个字符串列表(用空格隔开):dqwuj wejk dfre
# ['dqwuj', 'wejk', 'dfre']
# 无公共前缀
# 请输入一个字符串列表(用空格隔开):123 123nsdk 1265478 12fsmfk
# ['123', '123nsdk', '1265478', '12fsmfk']
# 最长公共前缀: ['12']
# 请输入一个字符串列表(用空格隔开):ds
# ['ds']
# 最长公共前缀: ['ds']
# 请输入一个字符串列表(用空格隔开): er efdf efd edddd
# ['er', 'efdf', 'efd', 'edddd']
# 最长公共前缀: ['e']