我已经阅读了几个python教程(Dive Into Python,一个),以及Python.org上的语言参考 - 我不明白为什么语言需要元组.
与列表或集合相比,元组没有方法,如果我必须将元组转换为集合或列表以便能够对它们进行排序,那么首先使用元组有什么意义呢?
不变性?
为什么有人关心变量是否存在于内存中的不同位置而不是最初分配的位置?这整个Python的不变性业务似乎过分强调.
在C/C++中,如果我分配一个指针并指向一些有效的内存,我不关心地址的位置,只要在我使用它之前它不是null.
每当我引用该变量时,我都不需要知道指针是否仍然指向原始地址.我只是检查null并使用它(或不使用).
在Python中,当我分配一个字符串(或元组)将其分配给x时,然后修改字符串,为什么我关心它是否是原始对象?只要变量指向我的数据,那就重要了.
>>> x='hello'
>>> id(x)
1234567
>>> x='good bye'
>>> id(x)
5432167
Run Code Online (Sandbox Code Playgroud)
x 仍然引用我想要的数据,为什么有人需要关心它的id是相同还是不同?
我的理解是Python字符串是不可变的.
我尝试了以下代码:
a = "Dog"
b = "eats"
c = "treats"
print a, b, c
# Dog eats treats
print a + " " + b + " " + c
# Dog eats treats
print a
# Dog
a = a + " " + b + " " + c
print a
# Dog eats treats
# !!!
Run Code Online (Sandbox Code Playgroud)
Python不应该阻止这项任务吗?我可能错过了一些东西.
任何的想法?
如何从特定索引替换字符串中的字符?例如,我想从字符串中获取中间字符,如abc,如果字符不等于用户指定的字符,那么我想替换它.
这样的事可能吗?
middle = ? # (I don't know how to get the middle of a string)
if str[middle] != char:
str[middle].replace('')
Run Code Online (Sandbox Code Playgroud) 我有一个列表,比如命名mac,它可以节省6个字节的mac地址.我想将最后一个字节设置为0,然后我使用:
mac[5] = 0
Run Code Online (Sandbox Code Playgroud)
但它给了我错误:
TypeError: 'str' object does not support item assignment
Run Code Online (Sandbox Code Playgroud)
如何解决这个错误?
我是几天前才刚开始使用python进行编程的,之前没有编程经验。
我一直在关注在线教程,并决定通过制作类似hang子手的游戏来挑战自己。我试图做到这一点,以便猜测替换隐藏单词中字母的位置,但是python返回此错误。现在,该单词称为name,并且hidden_name只是#的长度相同。
name = input ("what is your name ::")
hidden_name = ("#" * len(name))
print (hidden_name)
guess = input ("Guess a letter ::")
def guess_update(guess, name, hidden_name):
right = guess in name
i = 0
for c in name:
if c == guess:
hidden_name[i] = c
i += 1
if guess in name:
guess_update(guess, name, hidden_name)
print ("Your progess is ::", hidden_name)
Run Code Online (Sandbox Code Playgroud)
感谢您帮助这个新手:)