作业一:
输入一个大于0的正整数n,如果n == 1 ,则返回1, 如果n是偶数,则返回 n // 2 ,如果n是奇数,则返回 3n + 1,将所有的返回值存放到一个列表中,注意:n是第一个元素,其他的元素根据上述要求生成。最后求返回的列表和列表长度。
n = int(input("输入一个大于0的正整数"))
result = [n]
for _ in range(10000000):
if n == 1:
break
elif n % 2 == 0:
n = n // 2
else :
n = 3 * n + 1
result.append(n)
print(f"列表为:{result};列表长度为:{len(result)}")
作业二:
猜拳游戏:石头、剪刀、布的游戏
import random
choices = ["石头", "剪刀", "布"]
while True:
user_choice = input("输入你的选择(石头、剪刀、布)或者输入‘退出’退出游戏:").lower()
if user_choice == "退出":
break
elif user_choice not in choices:
print("输入错误,请重新输入")
continue
computer_choice = random.choice(choices)
print(f"电脑选择了:{computer_choice}")
if user_choice == computer_choice:
print("平局!")
elif (user_choice == "石头" and computer_choice == "剪刀") or (user_choice == "剪刀" and computer_choice == "布") or (user_choice == "布" and computer_choice == "石头"):
print("你赢了!")
else:
print("你输了!")
作业三:
求50~150之间的质数是那些?存储在列表中
nums = []
for i in range(50, 151):
is_num = True
for j in range(2, i):
if i % j == 0:
is_num = False
break
if is_num:
nums.append(i)
print(nums)
作业四:
打印输出标准水仙花数,输出这些水仙花数
for num in range(100, 1000):
hundreds_digit = num //100
tens_digit = (num // 10) % 10
ones_digit = num % 10
if num == hundreds_digit ** 3 + tens_digit ** 3 + ones_digit ** 3:
print(num)
作业五:
验证:任意一个大于9的整数减去它的各位数字之和所得的差,一定能被9整除.
num = 10
while num < 1000000:
digits_sum = sum(int(digit) for digit in str(num))
i = num - digits_sum
if i % 9 ==0:
print(f"{num} = True")
else:
print(f"{num} = False")
num += 1
作业六:
一个五位数,若在它的后面写上一个7,得到一个六位数A,
若在它前面写上一个7,得到一个六位数B,B是A的五倍,求此
五位数
i = 10000
while i < 100000:
A = 10 * i + 7
B = 700000 + i
if B == 5 * A:
print(i)
break
i += 1
作业七:
有一堆硬币,每次只能拿一个或者两个,求最少多少次可以拿完硬币
[10, 8, 5, 3, 27, 99]
coins = [10, 8, 5, 3, 27, 99]
def min_moves(coin_value):
return coin_value // 2 + coin_value % 2
total_moves = 0
for coin in coins:
total_moves += min_moves(coin)
print(total_moves)
作业八:
如果两个素数之差为2,这样的两个素数就叫作"孪生数",找出100以内的所有"孪生数"
def is_prime(n):
if n < 2:
return False
for i in range(2, int(n**0.5)+1):
if n % i == 0:
return False
return True
for i in range(2, 100):
if is_prime(i) and is_prime(i + 2):
print(f"({i}, {i + 2})")
作业九:
给定一个列表,求最大值(不能使用系统api),求最小值,求平均值、求和
def find_max_min_avg_sum(lst):
if not lst:
return None, None, 0, 0
n = len(lst)
current_max = lst[0]
current_min = lst[0]
total_sum = lst[0]
for num in lst[1:]:
if num > current_max:
current_max = num
if num < current_min:
current_min = num
total_sum += num
average = total_sum / n
return current_max, current_min, average, total_sum
my_list = [12, 45, 6, 32, 78, 23]
max_value, min_value, avg_value, sum_value = find_max_min_avg_sum(my_list)
print(f"最大值:{max_value}")
print(f"最小值:{min_value}")
print(f"平均值:{avg_value}")
print(f"总和:{sum_value}")
作业十:
将list中的重复数据去重,至少使用两种方案
original_list = [1, 2, 3, 2, 4, 1, 5]
new_list = []
for item in original_list:
if item not in new_list:
new_list.append(item)
print(new_list)
original_list = [1, 2, 3, 2, 4, 1, 5]
unique_list = list(set(original_list))
print(unique_list)
作业十一:
如何将0-10随机存入列表中
import random
result = random.sample(range(0, 11), 10) # 从0 - 10这11个数中取10个不重复的数
print(result)