-2

文だけでなく単語もスクランブルするプログラムを作成しようとしています。単語をスクランブルするコードはありますが、文をスクランブルするために何をすればよいかわかりません。何か案は?前もって感謝します!!

import random

def main():
    word = input("Please enter a word or a sentence (if sentence, add a period to end the sentence: ")
    if "." in word:
        print(scramble(word))
    else:
        print(scrambleTwo(word))


def scramble(word):
    char1 = random.randint(1, len(word)-2)
    char2 = random.randint(1, len(word)-2)
    while char1 == char2:
        char2 = random.randint(1, len(word)-2)
    newWord = ""

    for i in range(len(word)):
        if i == char1:
            newWord = newWord + word[char2]
        elif i == char2:
            newWord = newWord + word[char1]

        else:

            newWord = newWord + word[i]

    return newWord

def scrambleTwo(word):


main()
4

2 に答える 2

0

コードにいくつかの問題があります。1 つは、1 文字の単語をごちゃ混ぜにすることはできますが、試してみることです。raw_inputだけでなく、あなたも欲しいですinput。最後に、 を使用splitして各単語を取得し、それをスクランブルします。これが修正版です。

import random

def main():
    word = raw_input(
        "Please enter a word or a sentence "
        "(if sentence, add a period to end the sentence: ")
    if not "." in word:
        print(scramble(word))
    else:
        print(scrambleTwo(word))


def scramble(word):
    if len(word) < 2:
        return word

    char1 = random.randint(1, len(word)-2)
    char2 = random.randint(1, len(word)-2)
    while char1 == char2:
        char2 = random.randint(1, len(word)-2)
    newWord = ""

    for i in range(len(word)):
        if i == char1:
            newWord = newWord + word[char2]
        elif i == char2:
            newWord = newWord + word[char1]

        else:

            newWord = newWord + word[i]

    return newWord

def scrambleTwo(word):
    bits = word.split(" ")
    new_sentence_array = []
    for bit in bits:
        if not bit:
            continue
        new_sentence_array.append(scramble(bit))
    return " ".join(new_sentence_array)


main()
于 2014-04-03T23:07:13.993 に答える