我试图让用户输入输入新学生的详细信息,然后使用新的详细信息创建一个新的类对象,并调用 print_details 方法来显示新学生的详细信息。有人能指出我正确的方向吗?
class Student:
def __init__(self, name, age, course, ID):
self.name = name
self.age = age
self.course = course
self.ID = ID
def print_details(self):
print("Name: " + self.name)
print("Age: " + str(self.age))
print("Course: " + self.course)
print("Student ID: " + self.ID)
student1 = Student("Bob", 20, "Computer Science","1000121")
student2 = Student("Alice", 21, "Computer Science", "1000475")
student3 = Student("Jane", 18, "Information Technology", "1000823")
student1.print_details()
student2.print_details()
student3.print_details()
Run Code Online (Sandbox Code Playgroud) 当我尝试在 Python 3.7 中使用 f-string 语法组合字符串时出现错误。
我的代码如下:
i = 1
site_id= 0
meter = 0
model_id = i
target_name = 'log1p_meter_reading_corrected2'
f'model_site_id_{str(site_id)}_meter_{str(meter)}_{target_name}_model_id_{str(model_id)}_11_12_19.hdf5'
Run Code Online (Sandbox Code Playgroud)
返回错误:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-68-1ebe1c78d868> in <module>
6 target_name = 'log1p_meter_reading_corrected2'
7
----> 8 f'model_site_id_{str(site_id)}_meter_{str(meter)}_{target_name}_model_id_{str(model_id)}_11_12_19.hdf5'
TypeError: 'str' object is not callable
Run Code Online (Sandbox Code Playgroud)
是什么导致了错误,我应该如何更正我的代码?
我有一个数字,我想按如下所示进行拆分。我想保持数字存在的顺序,但由此产生的列表必须保持数字的原始顺序。
我拥有的数字是 3147,可以按如下所示进行拆分。3147可以拆分为31、47或3、1、47等,但不能丢失原数的顺序。
那么我该如何实现呢?
最好是用 Python 得到答案,但用任何其他语言也可以。
Input
3147
Output
[3,1,4,7]
[3,147]
[3,1,47]
[31,4,7]
[31,47]
etc
Run Code Online (Sandbox Code Playgroud) 我想知道我是否可以在 2 个列表中识别相似值的位置,并使用在第三个列表中识别值的位置。
v= [100,200,300,400,500,600,700,800,900,1000,1100]
x= [67,56,89,21,90,54,38,93,46,17,75]
j= [200,500,600]
Run Code Online (Sandbox Code Playgroud)
我要代码识别j的值可以在v[1]、v[4]和v[5]中找到,并利用v[1]、v[4]和v[5]的位置得到/ 返回 x[1]、x[4] 和 x[5] 的值。到目前为止,我已经尝试过:
h = set(v)&set(j)
print(h)
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Faker 创建一些从 1800 年到 1900 年范围内的假年份(只是年份而不是日期)。
我已经阅读了有关假日期和年份的文档,看起来 Faker.year() 是前进的方向。但是,没有关于向 .year() 添加范围的文档。目前,它仅输出 1970 年后的内容。
我正在尝试使用 python3 中的自定义字符集进行 Base64 编码。我在 SO 中看到的大多数示例都与 Python 2 相关,因此我不得不对代码进行一些细微的调整。我面临的问题是我正在用 替换字符/,_但它仍然用 打印/。我的代码是:这只是一个示例,我不尝试仅使用 urlsafe 字符进行 base64。custom可以是任何具有正确长度的东西。
import base64
data = 'some random? data'
print(base64.b64encode(data.encode()))
std_base64chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
custom = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"
data = data.translate(str.maketrans(custom, std_base64chars)).encode()
print(base64.b64encode(data))
# Both prints
b'c29tZSByYW5kb20/IGRhdGE='
b'c29tZSByYW5kb20/IGRhdGE='
Run Code Online (Sandbox Code Playgroud)
如何使翻译正常工作,以便将出现的/正确替换为_?
我应该明确的是,我并不是试图在这里只进行一种类型的 Base64 编码(例如 urlsafe),而是尝试任何可能的字符集。这将是一个用户可以传递自己的字符集的函数。我正在寻找逐个字符的映射,而不是字符串切片。
由于我的问题的清晰度存在一些混乱,因此我尝试添加更多细节。
我正在尝试编写一个函数,该函数可以从用户处获取任意字符集,然后在 Base64 编码之前单独映射它们。大多数答案都是围绕操作altchars或字符串切片和替换,但这并不能解决所有需求。
例如,itoa64 字符集是:
./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz=或 unix crypt 格式是./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz。答案虽然正确,但没有解决这些情况。
我有一个元组列表,如下所示:
l = [('xx-1711640.html', 'Hello'),
('xx-8411747.html', 'Bye')
]
Run Code Online (Sandbox Code Playgroud)
实际的列表有数千个条目。现在我想对元组使用正则表达式。为此,我有一个 for 循环。另外,我希望输出也是元组列表。
我的代码:
ret = []
for line in l:
for i in line:
try:
reg = re.sub(r'.+-', '', i)
ret.append(reg)
except:
print(line)
Run Code Online (Sandbox Code Playgroud)
然而,使用这段代码,我的输出如下所示:
ret = ['1711640.html', 'Hello', '8411747.html', 'Bye']
Run Code Online (Sandbox Code Playgroud)
当我希望它看起来像这样时:
ret = [('1711640.html', 'Hello'), ('8411747.html', 'Bye')]
Run Code Online (Sandbox Code Playgroud)
我怎样才能正确地做到这一点?
在终端中,我pd.options.display.max_rows设置为 60。但是对于超过 60 行的系列,显示内容会被截断为仅显示 10 行。如何增加显示的截断行数?
例如,以下内容(在max_rows设置范围内)显示 60 行数据:
s = pd.date_range('2019-01-01', '2019-06-01').to_series()
s[:60]
Run Code Online (Sandbox Code Playgroud)
但如果我要求 61 行,它会被严重截断:
In [44]: s[:61]
Out[44]:
2019-01-01 2019-01-01
2019-01-02 2019-01-02
2019-01-03 2019-01-03
2019-01-04 2019-01-04
2019-01-05 2019-01-05
...
2019-02-26 2019-02-26
2019-02-27 2019-02-27
2019-02-28 2019-02-28
2019-03-01 2019-03-01
2019-03-02 2019-03-02
Freq: D, Length: 61, dtype: datetime64[ns]
Run Code Online (Sandbox Code Playgroud)
我怎样才能设置它,以便每次超出限制时我都能看到 20 行max_rows?
所以说我有一个类似于“One2three4”的字符串。我是否可以查看字符串并取整数并将它们放入自己的字符串中,所以我的最终结果将是“24”。谢谢
我有一个字典,它有一个键(一个两位数的前缀)和一个值(一个字符串列表)。它看起来像这样:
prefixes = {
"AC" : ["england-wales"],
"OC" : ["england-wales", "wales"],
"SC" : ["scotland"],
"NC" : ["northern-ireland"]
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个前缀列表,其中的值包含列表中提供的区域。
通过的区域可以是一个或多个区域,例如:
regions = ['england-wales', 'wales']
Run Code Online (Sandbox Code Playgroud)
因此,上述数据我想创建一个新的列表名为前缀,它将包含所有的前缀,其中无论是“威尔士”或“英格兰威尔士”包含在值:
prefix_list = ['AC', 'OC']
Run Code Online (Sandbox Code Playgroud)
而如果 region 刚好等于 'wales' 那么:
prefix_list = ['OC']
Run Code Online (Sandbox Code Playgroud)
我玩了一些东西,让这个凌乱的解决方案起作用:
combo_list = []
prefix_list = []
for r in regions:
combo_list.append([k for k, v in prefixes.items() if r in v])
for sublist in combo_list:
for i in sublist:
prefix_list.append(i)
prefix_list = sorted(set(prefix_list)) #This will remove duplicates for me
Run Code Online (Sandbox Code Playgroud)
我认为必须有一种更好、更“清洁”的方式来做到这一点,但无法完全弄清楚。任何帮助表示赞赏。