用另一个字符替换字符串的随机字符

Replacing a random character of string with another character

对于上下文:我正在制作一个简单的 python 游戏,您可以在其中四处走动并收集浆果。 如果你想测试它,我的整个代码看起来像这样。

import keyboard
import time
import emoji
import random

def assignstring():
    print("~~~~~~~~~~~~~~~~")
    s = ""
    bers1 = random.randint(0, 22)
    bers2 = random.randint(0, 10)
    print(bers1, bers2)
    for a in range(9):
        for i in range(21):
            if i == posx and a == posy:
                s = s + emoji.emojize(":bear:")
            elif a == bers1 and i == bers2:
                s = s + "!"
            else:
                s = s + emoji.emojize(":prohibited:")
        print(s)
        s = ""
    print("~~~~~~~~~~~~~~~~")

def poschange(posx, posy):
    if keyboard.is_pressed("left"):
        posx = posx - 1
        time.sleep(0.1)
    if keyboard.is_pressed("right"):
        posx = posx + 1
        time.sleep(0.1)
    if keyboard.is_pressed("down"):
        posy = posy + 1
        time.sleep(0.1)
    if keyboard.is_pressed("up"):
        posy = posy - 1
        time.sleep(0.1)
    if posx > 20:
        posx = 20
    if posx < 0:
        posx = 0
    if posy < 0:
        posy = 0
    if posy > 8:
        posy = 8
    return posx, posy

string = ""
posx = 10
posy = 4
c = 11
savex = 0
savy = 0
assignstring()


while True:
    savex = posx
    savey = posy
    posx = (poschange(posx, posy))[0]
    posy = (poschange(posx, posy))[1]
    if savex != posx:
        assignstring()
        print(posx, posy)
    if savey != posy:
        assignstring()
        print(posx, posy)

我想制作一个功能,用浆果表情符号替换其中一个被禁止的表情符号。 这是我写的一些伪代码:

def berryspawn():
    berrycord1 = random.randint(0, 10)
    berrycord1 = random.randint(0, 22)
    #saves the coordinates and replaces the emoji at that location with a berry emoji.

我想让它保存坐标,以便它可以跟踪玩家是否正在触摸浆果。 最简单的方法是什么?

问候迈克

我想我可以帮你改变字符串部分的随机字符,我想。

这是我会做的,一步步完成(尝试和测试):

import random # need to use randints

mystring = "foo" # this'd be your string


# Now to get the string length so we can get a random char from it. First to 
# turn it to a list, as individual characters in strings can't be changed.

mystring_list = list(mystring)

mystring_list[random.randint(0, (len(mystring_list) - 1))] = # add your new 
# character value here

# Finally you need to change the list back to its string form. We'll also 
# remove all []s and 's plus spaces and commas so it's back to complete string 
# format.

mystring = str(mystring_list).replace('[', "").replace(']', "").replace("'", 
"").replace(",", "").replace(" ", "")

我想这样就可以了。流程细分:

  1. mystring 被转换为它所有字符的列表,mystring_list
  2. 在 Random 模块的帮助下,我们在 mystring_list
  3. 中获得了一个随机项目
  4. 然后那个项目被改变了。
  5. mystring 然后被设置为 mystring_list 的字符串,删除了 brackets/commas/spaces/apostrophes/quotes。所以基本上是一个字符串。

唯一的错误是,如果原始字符串中有空格,那么它们将在末尾被删除(第 4 步)。如果您不介意原始字符串中每个字符后的奇数空格,那么您可以删除 .replace(" ", ""),原始空格将被保留。

希望对您有所帮助!