Py学习  »  tdelaney  »  全部回复
回复总数  6
3 年前
回复了 tdelaney 创建的主题 » 这里的菜鸟。。。需要Python代码总结方面的帮助吗

assert 这没什么意义。您只需要根据 name 。您可以从向 名称 参数,调用方可以选择完全不提供名称,然后进行简单的真实性测试。

def say_hello(name=None):
    if name:
        return f"Hello, {name}"
    else:
        return "Hello there!"
3 年前
回复了 tdelaney 创建的主题 » Python-逗号分隔的切片不起作用

对象自行决定如何编制索引。当python看到 a[0:1, 2:4] 它首先为对象创建切片对象 : 分离值,然后将它们组合成元组: (slice(0, 1, None), slice(2, 4, None)) .该元组被传递到对象的 __getitem__ : a[(slice(0, 1, None), slice(2, 4, None))] .把那个元组传给 list.__getitem__ 它丢失了——它不认识这种类型的索引。把它放在一个数据框中,使用它的“iloc”索引,它就可以工作了。

>>> a = [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]]
>>> a[0:1, 2:4]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list indices must be integers or slices, not tuple
>>> import pandas as pd
>>> df = pd.DataFrame(a)
>>> df.iloc[0:1, 2:4]
   2  3
0  2  3

还有其他软件包,比如 pandas 这让我们对索引的含义产生了深刻的认识。所以要回答你的问题,这取决于你谈论的是什么类型的物体。不同的对象可以自由地以不同的方式解释切片。

4 年前
回复了 tdelaney 创建的主题 » 如何修复CSV文件(python 3)中的“,”分隔

这是一个CSV文件,所以使用CSV解析器将其分解为行和列。CSV有处理分隔符的规则,分隔符也用于单元格内部(如数字中的逗号)。让现有的模块来解决这个问题。

import csv
  
with open('wealth-per-country.csv', 'r', newline="") as arq:
    reader = csv.reader(arq)
    next(reader) # skip header
    for column in csv.reader(arq):
        if column: # skip blank lines
            print(f"Country: {column[0]}, \nMedian_Wealth: {column[1]}, \nMean_Wealth: {column[2]}, \nPopulation: {column[3]}")
5 年前
回复了 tdelaney 创建的主题 » 用python验证输入

在单个循环中执行整个提示/验证。用户只有满足条件才能继续

print("This program simulates a 'rock paper scissor' game.")
print("The rules are as follows: rock beats scissor, paper beats rock, and scissor beats paper. \n")

print("This program simulates a 'rock paper scissor' game.")
print("The rules are as follows: rock beats scissor, paper beats rock, and scissor beats paper. \n")

#get user input
while True:
    user_choice = input("Please choose from the following:  \n"
                    " 1 for scissor \n"
                    " 2 for rock \n"
                    " 3 for paper. \n")

    #validate input so user only enters 1, 2, or 3
    if user_choice in ["1", "2", "3"]:
        int_user_choice = int(user_choice)
        break
5 年前
回复了 tdelaney 创建的主题 » 在python中将字符串中的字符与列表匹配

not set("".join(myList)).isdisjoint(set(myString)) 会这样做,但考虑到您可能正在处理for循环,并且您的代码很接近,请执行以下操作

def match(myList , myString):
    myChars = "".join(myList)
    for c in myString:
        if c in myChars:
            return True
    return False
6 年前
回复了 tdelaney 创建的主题 » 使用python 3中的换行符将字符串写入csv

python字符串使用 \n 换行符。通常情况下,A \r\n 转换为 \n 读取文件时 换行符被转换了 \n \rn 取决于您的系统默认值和 newline= 写入时的参数。

在你的情况下, \r 从Web界面读取时未被删除。打开文件时 newline='\r\n' ,python扩展了 \n 本来应该的,但是 R 通过,现在你的Neline是 \r\r\n . 您可以通过以二进制模式重新读取文本文件来看到这一点:

>>> res = 'foo,bar,stuff\r\n,more stuff,data,report\r\n,etc,etc,etc\r\n'
>>> open('test', 'w', newline='\r\n').write(res)
54
>>> open('test', 'rb').read()
b'foo,bar,stuff\r\r\n,more stuff,data,report\r\r\n,etc,etc,etc\r\r\n'

因为您已经有了所需的行尾,所以只需以二进制模式写入并跳过转换:

>>> open('test', 'wb').write(res.encode())
54
>>> open('test', 'rb').read()
b'foo,bar,stuff\r\n,more stuff,data,report\r\n,etc,etc,etc\r\n'

注意,我使用了系统默认编码,但您可能希望对编码进行标准化。