Python第一次作业题解

山再高,往上爬,总能登顶;
路再长,走下去,定能到达。

有一说一,写这篇博文的目的纯属水积分,但是呢不缺乏实用性,机智如我😀

1.知识点
2.构造
3.如何提交作业

芝士点

循环结构 range
引用包 import
名命 from import as
随机数 random.randint
列表 chengji=[]
if ,else 语句
lambda
def 函数的声明
输出 print
iterator转list
过滤 filter

构造

首先需要引用random
import random
如果想要调用里面的东西
需要这么用
random.randint(1,10)
这样显得冗杂我们可以这么来优化以下代码风格
from random import randint as rd
这样就可以rd(1,10)这样用了
chengji = [rd(1,100)for _ in range(30)]
用随机数输入进列表,一共执行30次,每次都在往列表塞数字
def chengjiyouhua(x):
if x >= 60:
y=True
else:
if rd(1,10)>9:
y = True
else :
y=False
return y

自定义一个函数,来返回Ture or False
chengjigai = filter(chengjiyouhua,chengji)
执行操作
print(chengji)
print(list(chengjigai))

输出
整体代码如下

from random import randint as rd
chengji = [rd(1,100)for _ in range(30)]
def chengjiyouhua(x):
    if x >= 60:
        y=True
    else:
        if rd(1,10)>9:
            y = True
        else :
            y=False
    return y
chengjigai = filter(chengjiyouhua,chengji)
print(chengji)
print(list(chengjigai))

接下来就是优化代码的作业了
其实就是把函数用lamdba来实现
lambda x: True if x>=60 else True if rd(1,10)>9 else False
分析代码
返回True如果x>=60否则 进入else 模块
else 模块中说
返回True 如果随机数是10的话
否则进入否则的否则模块
输出False
用C语言的代码描述一波就是

if(x>=60)return true;
else
{
if(rand()%10+1>9)return true;
else return false;
}

然后修改后咱们的def 函数就没有用了,就可以删除了。
将执行函数修改为咱们的lamdba即可
代码如下

from random import randint as rd
chengji = [rd(1,100)for _ in range(30)]
chengjigai = filter(lambda x: True if x>=60 else True if rd(1,10)>9 else False,chengji)
print(chengji)
print(list(chengjigai))

如何提交作业

先声明一波:我真心觉着那个啥朱庇特闹特布克十分难用

先展示Spyder怎么交,那个有会破解pycharm的童鞋那个教教我吧
QAQ

在这里插入图片描述
先打完代码,复制一波
粘贴到txt

在这里插入图片描述
在这里插入图片描述
然后改个名字
在这里插入图片描述
在这里插入图片描述
一波YES
完事
在这里插入图片描述
然后就交就行了
那个朱庇特闹特布克也是直接写复制然后改名字,改成……
在这里插入图片描述
在这里插入图片描述
即可下载
然后就改个名字交就行了
要不然就把后缀扩展名改成ipynb也可以
在这里插入图片描述
这样保存也行,记得改名

END
By-轮月

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
N皇后问题是指在一个N*N的棋盘上放置N个皇后,使得每行每列和对角线上都只有一个皇后。这是一个经典的回溯算法问题,可以用Python来实现。 1. 定义一个函数solveNQueens(n),其中n为棋盘的行数,返回类型是一个列表,每个元素是一个长度为n的列表,代表一个合法的棋盘状态。 2. 在函数中定义一个递归函数backtrack(board, row),其中board是一个n*n的矩阵,代表当前棋盘状态,row代表当前要放置皇后的行数。 3. 在backtrack函数中,先判断当前行数是否等于n,如果等于,说明已经找到了一种合法的棋盘状态,将当前棋盘状态添加到结果列表中。 4. 如果当前行数小于n,则遍历当前行的每个位置,判断该位置是否可以放置皇后。如果可以放置,则将该位置置为1,继续递归backtrack(board, row+1);如果不可以放置,则将该位置置为0,继续遍历下一个位置。 5. 判断一个位置是否可以放置皇后的方法是检查该位置所在的行、列、左上角、右上角是否已经有皇后了。可以用四个列表分别记录每行、每列、每个左上角到右下角的对角线、每个右上角到左下角的对角线是否有皇后,如果都没有,则可以放置皇后。 6. 最后返回结果列表即可。 代码如下: ```python class Solution: def solveNQueens(self, n: int) -> List[List[str]]: res = [] board = [[0] * n for _ in range(n)] cols = [False] * n diag1 = [False] * (2*n-1) diag2 = [False] * (2*n-1) self.backtrack(board, 0, cols, diag1, diag2, res) return res def backtrack(self, board, row, cols, diag1, diag2, res): n = len(board) if row == n: res.append(self.make_board(board)) return for col in range(n): if cols[col] or diag1[row+col] or diag2[row-col+n-1]: continue board[row][col] = 1 cols[col] = diag1[row+col] = diag2[row-col+n-1] = True self.backtrack(board, row+1, cols, diag1, diag2, res) board[row][col] = 0 cols[col] = diag1[row+col] = diag2[row-col+n-1] = False def make_board(self, board): return [''.join(['Q' if x else '.' for x in row]) for row in board] ``` 时间复杂度:$O(N!)$,其中N为棋盘的行数。因为第一行有N种选择,第二行有N-2种选择(不能和第一行在同一列或对角线),第三行有N-4种选择,以此类推,总共有N!种选择。因此时间复杂度为$O(N!)$。 空间复杂度:$O(N^2)$,其中N为棋盘的行数。需要用一个n*n的矩阵来保存棋盘状态,以及四个长度为2*n-1的列表来保存每行、每列、每个左上角到右下角的对角线、每个右上角到左下角的对角线是否有皇后。因此空间复杂度为$O(N^2)$。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Round moon

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

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

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

打赏作者

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

抵扣说明:

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

余额充值