Python题目1

1.字符串反转

str1 = input()
print(str1[::-1])
list1= list(input())
list1.reverse()
str = ''.join(list1)
print(str)

2. 列表去重排序打印

import numpy as np
ls=["p","p","y","y","k","k","j","z"]
ll = np.unique(ls)
print(' '.join(ll), end = ' ')
# set:无序不重复

ls=["p","p","y","y","k","k","j","z"]
lls = set(ls)
lls.sort()
print(' '.join(lls), end=' ')
# fromkeys()生成新字典 字典键去重
ls=["p","p","y","y","k","k","j","z"]
temp = {}.fromkeys(ls).keys()
print(' '.join(sorted(list(temp))), end=' ')


# di = {}.fromkeys(keys, values)  返回dict
# dm = di.keys() / di.values()    返回dict_keys对象
# list(dm)   对象列表化

3. 统计列表元素出现次数(排序)

ls = ["A", "B", "B", "C", "C"]
lls = sorted(set(ls))
for l in lls:
    print('{0} : {1}'.format(l, ls.count(l)))
ls=["A","B","B","C","C"]
d = dict()
for item in ls:
    if d.get(item):
        d[item] += 1
    else:
        d[item] = 1
d = sorted(d.items(), key=lambda e: e[0])
for item in d:
    print('{} : {}'.format(item[0], item[1]))


# d = sorted(d.items(), key=lambda e: e[0])
# d.items() 为要排序的对象
# key=lambda 变量:变量[维数]   按照维数排序


# 注:对字典类型sorted(按维数)后转化为list,list中每一个元素为元祖(key, value)

4. 列表取中位数

def median(ls):
    ls.sort()
    half = len(ls) // 2
    return (ls[half] + ls[~half]) / 2

# 索引取反

5. 矩阵加法

list1 = [(1,1,1), (2,2,2), (3,3,3)]
list2 = [(1,0,0), (0,1,0), (0,0,1)]
listm = []
for i in range(3):
    for j in range(3):
        listm.append(list1[i][j] + list2[i][j])
print('[{0}, {1}, {2}]'.format(listm[:3], listm[3: 6], listm[6:]))

补充: 

# 手动输入创建list

list1 = []
for i in range(3):
    list1.append([])
    for j in range(3):
        list1[i].append(eval(input()))
print(list1)

6. 进制转化输出

def trans(n, k):
    ls = []
    while n > 0:
        ls.append(str(n % k))
        n = n // k
    ls.reverse()
    atr = eval(''.join(ls))
    print(atr)


n, k = eval(input())
trans(n, k)
# 递归  字符串相加

def trans(n, k):
    if (n < k):
        return str(n);
    else:
        return trans(n // k, k) + str(n % k)


n, k = eval(input())
print(trans(n, k))

7. 水仙花数

n = int(input())
if n >= 3 and n < 6:
    for i in range(10 ** (n - 1), 10 ** n):
        sum = 0
        for j in map(int, str(i)):
            sum = sum + j ** n
        if sum == i:
            print(i)


# map(func, iter)   对序列进行func转化

# list(map(int, str(123)))               结果为[1,2,3]
# list(map(str, [1,2,3,4,5,6,7,8]))      结果为'12345678'

8. 数列求和

sum=a+aa+aaa+⋯+aa⋯a(n个a)

a = eval(input())
n = eval(input())
sm = 0
str1 = ''
for i in range(n):
    str1 += str(a)
    sm += eval(str1)
print(sm)

9. 求n以下的最大素数

# for相当于一个if,for结束后可接一个else

from math import*
n = int(input())
for i in range(n-1,1,-1):
    for j in range(2, int(sqrt(i))+1):
        if i % j == 0:
            break
    else:
        print(i)
        break

求最小的n个素数:

from math import sqrt
n = eval(input())
i = 2
cnt = 1
while cnt <= n:
    for j in range(2, int(sqrt(i)+1)):
        if i % j == 0:
            break
    else:
        print(i)
        cnt = cnt + 1
    i = i + 1

10. 求完数

输出最小的N(1 <= N <= 4)个完数。所谓完数就是该数恰好等于除自身外的因子之和。

def factorsum(n):
    ls = []
    for i in range(1, n):
        if n % i == 0:                #得到n的所有因子
            ls.append(i)
    if sum(ls) == n:
        ls2 = [str(i) for i in ls]
        return ls2
    else:
        return False




n = eval(input())
cnt = 1
i = 2
while cnt <= n:
    if factorsum(i):
        print('{}={}'.format(i,'+'.join(factorsum(i))))
        cnt = cnt + 1
    i = i + 1

11. 分解质因数

分解质因数只针对合数(非质数或者非素数,不包括1在内), 每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数,叫做这个合数的分解质因数。

# 递归

from math import sqrt
num = int(input())
ls = []

def fast(num):
    flag = 1
    for i in range(2, int(sqrt(num))+1):
        if num % i == 0 and i != num:
            ls.append(i)
            flag = 0
            fast(num//i)
            break
    if flag == 1:
        ls.append(num)

fast(num)
print(ls)


# 循环

from math import sqrt
num = int(input())
ls = []

def fast(num):
    while num > 1:
        for i in range(2, num + 1):
            if num % i == 0:
                ls.append(i)
                # print(i)
                num = num // i
                # print(num)
                break

fast(num)
print(ls)


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,下面是 Python 题目 1 的要求: ## 题目描述 请编写一个小程序,猜测用户的年龄。 程序运行后,会随机生成一个 1 到 100 之间的整数,表示用户的年龄。然后程序会向用户询问猜测的年龄,用户输入猜测的年龄后,程序会给出一定的提示,让用户继续猜测,直到猜对为止。 ## 程序要求 1. 程序中使用 for 循环和 if else 语句实现猜年龄的逻辑。 2. 程序需要使用 where 语句来判断年龄是否正确,如果年龄正确,程序将输出“恭喜你,猜对了!”并退出循环。 3. 如果用户猜错了,程序需要根据猜测的年龄给出相应的提示,如“你猜的有点小了,再试试大一点的数字吧”或“你猜的有点大了,再试试小一点的数字吧”。 ## 代码实现 下面是 Python 代码实现: ```python import random age = random.randint(1, 100) for i in range(5): guess = int(input("请猜猜我的年龄是多少:")) if guess == age: print("恭喜你,猜对了!") break elif guess < age: print("你猜的有点小了,再试试大一点的数字吧") else: print("你猜的有点大了,再试试小一点的数字吧") else: print("你已经猜了 5 次了,正确答案是 %d" % age) ``` 上述代码中,我们使用了 Python 内置的 random 模块来生成随机数,使用 for 循环进行猜年龄的操作,使用 if else 语句来判断猜测的年龄是否正确,使用 where 语句来输出相应的提示信息。当用户猜对年龄时,程序会输出“恭喜你,猜对了!”并退出循环,否则程序会根据猜测的年龄给出相应的提示信息,让用户继续猜测,直到猜对为止。如果用户猜测了 5 次但仍未猜对,程序将输出“你已经猜了 5 次了,正确答案是 xx”,并退出程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hvk_l

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值