Python代码补全计划: DAY-5

声明:该系列文章首发于公众号:Y1X1n安全,转载请注明出处!本公众号所分享内容仅用于每一个爱好者之间的技术讨论,所有渗透及工具的使用都需获取授权,禁止用于违法途径,否则需自行承担,本公众号及作者不承担相应的后果。

前言:
1、以后每天会在文末附上第二天的题目,可以提前写写,打开思路;
2、遇到不懂的地方可以多看看注释和🍭相关知识点部分;
3、量不在多,需持之以恒!


Question 6

1、Question:

编写一个程序,根据给定的公式计算和打印值:

Q = [(2*C*D)/H]的平方根

以下是C和H的固定值:

C是50。H是30。

D是变量,其值应以逗号分隔的顺序输入到您的程序中。例如:
让我们假设程序被赋予了以下逗号分隔的输入序列:

100,150,180

程序的输出应该是:

18,22,24

Hints:

如果收到的输出是十进制形式,则应四舍五入到最近的值(例如,如果收到的输出为26.0,则应打印为26)。
如果向问题提供输入数据,则应将其假定为控制台输入。


2、Solution

2.1 Python 3 by Y1X1n
from math import sqrt

C = 50
H = 30

def calc(number):
    Q = (2 * C * int(number)) / H
    Q = sqrt(Q)
    print("平方根结果:" + str(Q))
    return Q

if __name__ == '__main__':
    while True:
        E = []
        D_list = input("请输入需要计算的数字集:").split(',')
        for i in D_list:
            E.append(str(round(calc(i))))  
            # E 是一个空列表,因此不能使用 E[i] 的方式对其进行初始化。这会导致 IndexError 异常。
            # 要对 E 进行初始化,应该使用 append() 方法或者列表推导式。
            print("列表E:" + str(E) + "每个元素均为字符串类型")
        print(",".join(E))
2.2 Python 3
from math import sqrt # 从 math 模块中导入 sqrt 函数,该函数用于计算平方根
                      
C,H = 50,30

def calc(D): # 定义名为 calc 的函数,该函数接收一个参数 D,返回一个浮点数值,计算方法为 sqrt((2*C*D)/H)
    return sqrt((2*C*D)/H) # sqrt() 函数的返回值为计算出来的平方根,返回值的类型为浮点数

D = [int(i) for i in input().split(',')] # 使用 split() 方法将其按逗号分隔成一个字符串列表
D = [int(i) for i in D]   # 将字符串转换为整数
D = [calc(i) for i in D]  # 对整数列表中的每个元素调用 calc 函数,返回浮点数值列表
D = [round(i) for i in D] # 对浮点数值列表中的每个元素进行四舍五入,返回整数列表
D = [str(i) for i in D]   # 所有整数都转换为字符串,以便能够应用连接操作

print(",".join(D))# 使用 join() 方法将整数字符串列表连接成一个字符串,使用逗号作为分隔符,并将其输出到标准输出
2.3 Python 3
from math import sqrt

C,H = 50,30

def calc(D):
    return sqrt((2*C*D)/H)

D = input().split(',')  
D = [str(round(calc(int(i)))) for i in D]  # str(round(calc(int(i))))表达式部分
print(",".join(D))
2.4 Python 3
from math import sqrt
C,H = 50,30

def calc(D):
    return sqrt((2*C*D)/H)

print(",".join([str(int(calc(int(i)))) for i in input().split(',')]))
2.5 Python 3
from math import * # importing all math functions
C,H = 50,30

def calc(D):
    D = int(D)
    return str(int(sqrt((2*C*D)/H)))

D = input().split(',')
D = list(map(calc,D))   # applying calc function on D and storing as a list
print(",".join(D))

from math import sqrt
C, H = 50, 30
mylist = input().split(',')
print(*(round(sqrt(2*C*int(D)/H)) for D in mylist), sep=",")

my_list = [int(x) for x in input('').split(',')]
C, H, x = 50, 30, []

for D in my_list:
    Q = ((2*C*D)/H)**(1/2)
    x.append(round(Q))

print(','.join(map(str, x)))

2.6 Python 2
import math
c = 50
h = 30
value = []
items = [x for x in raw_input().split(',')]
for d in items:
    value.append(str(int(round(math.sqrt(2*c*float(d)/h)))))

print ','.join(value)

🍭3、相关知识点

3.1 round()函数

round() 是 Python 内置的一个数学函数,用于对一个数字进行四舍五入的操作。它的语法如下:
round(number[, ndigits])
其中,number 是要进行四舍五入的数字,ndigits 是可选参数,表示保留的小数位数,默认值为 0。如果 ndigits 为正数,则表示保留指定的小数位数;如果 ndigits 为负数,则表示将数字四舍五入到最接近的 10 的整数倍。

round() 函数的返回值为被四舍五入后的数字,返回值的类型与 number 的类型相同。如果 ndigits 参数不合法,或者 number 为 NaN 或无穷大的值,则 round() 函数会抛出 ValueError 异常。

在实际应用中,round() 函数常用于对浮点数进行精度控制,以及对一些需要进行简单算术运算的数字进行处理。例如,在某些情况下,我们需要将浮点数保留两位小数后输出,可以使用 round() 函数来实现。

3.2 列表推导式

列表推导式是 Python 中一种简洁的语法,用于快速生成一个新的列表。它的基本形式是:
[expression for item in iterable]
其中,expression 表示一个表达式,item 表示可迭代对象 iterable 中的每个元素,例如一个列表或一个字符串,列表推导式会根据 expression 对每个 item 进行计算,并将计算结果存储在一个新的列表中。

在这行代码中,列表推导式的 expression 部分是 int(i),表示将字符串 i 转换为整数,item 部分是 D,表示可迭代对象为列表 D 中的每个元素。因此,这行代码的作用是遍历列表 D 中的每个字符串元素,将其转换为整数,并将转换后的整数存储在一个新的列表 D 中。最后,变量 D 将成为一个整数列表,其中的每个元素都是对应字符串元素的整数值。

在实际应用中,这种将字符串转换为数字的操作非常常见,例如在读取文件、从网络接收数据等场景中,我们经常需要将文本形式的数据转换为数字,以便进行后续的处理和计算。这种基于列表推导式的转换方法简洁高效,可以大大简化代码,提高代码的可读性和可维护性。

Question 7

2、Question:

编写一个程序,以2位数字X,Y作为输入,并生成一个二维数组。数组的第i行和第j列中的元素值应该是i*j。

Note: i=0,1…, X-1; j=0,1…, Y-1. 假设向程序提供了以下输入:3,5
即:0,1,2
0,1,2,3,4

然后,程序的输出应该是:

[[0, 0, 0, 0, 0], [0, 1, 2, 3, 4], [0, 2, 4, 6, 8]]

Hints:

注意:如果向问题提供输入数据,则应将其假定为以逗号分隔形式的控制台输入.


📌 如果你对网络安全或编程感兴趣,可以搜索公众号“Y1X1n安全”,每天都会分享相关知识点,让我们一同加油!路漫漫其修远兮,吾将上下而求索。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值