1

Pythonのプログラムで問題が発生しています...外側の2文字をそのままにして、単語の途中を混乱させるプログラムが必要です...単語を3つの異なるセクションに正常に分割できたと思いますが、できません。単語の真ん中をスクランブルする方法を理解する

word = input("Enter a word")

first_letter = word[0]

last_letter = word[-1]

still_to_scramble = word[1:-1]

ランダムを使用する必要がありますか?または、簡単な方法はありますか。申し訳ありませんが、コーディングは比較的新しいです。

4

2 に答える 2

4

shuffleランダムパッケージから使用できます:

import random
letters = list(still_to_scramble)
random.shuffle(letters)
scrambled = ''.join(letters)

仕組みは次のとおりです。

>>> s
'$123abc$'
>>> first_letter = s[0]
>>> last_letter = s[-1]
>>> middle_parts = list(s[1:-1])
>>> random.shuffle(middle_parts)
>>> ''.join(middle_parts)
'b3a2c1'

注意して、これを行わないでください:

>>> middle_parts_random = random.shuffle(middle_parts)

shuffle所定の位置で機能ます-これは、シャッフルされたビットを返さないが、代わりに変更するという素晴らしい言い方です。それは実際に戻りますNone、そしてあなたはエラーを見ないのであなたはそれによってつまずくかもしれません:

>>> middle_parts_random = random.shuffle(middle_parts)
>>> middle_parts_random # Huh? nothing is printed!
>>> middle_parts_random == None # Ah, that's why. Darn you in-place methods!
True
于 2012-10-23T15:19:49.580 に答える
0

上記のBurhanKhalidのソリューションを拡張するために、正規表現を追加しました。この追加は、複数の単語を使用した入力に対して機能します。

$ cat ./jumble.py
#!/usr/bin/env python
import re
import random

def jumble(s):
    l = list(s)
    random.shuffle(l)
    return(''.join(l))

line = raw_input("Input string to jumble: ")
print(re.sub(r'\b(\w)(\w+)(\w)\b', lambda m: "".join([m.group(1),jumble(m.group(2)),m.group(3)]), line))

例:
$ ./jumble.py
jumbleへの入力文字列:私は任意の文字列を入力しています
私はjsut etnrneig some aabtrrriy sritng

注:上記の例は、デフォルトのpython-2.6.6-64.el6.x86_64を使用するRed Hat EnterpriseLinux6.7システムで実行されました。

于 2015-12-11T18:52:39.397 に答える