【问题标题】:Can't Return and Assign Variable from Function?无法从函数返回和分配变量?
【发布时间】:2021-08-09 14:32:23
【问题描述】:

对不起,如果这是一个愚蠢的问题,但我正在尝试编写一个函数,该函数将打乱一个单词并删除任何空格并返回单词长度和通过返回加扰的单词。此外,我希望能够通过简单地调用函数来分配变量,而不仅仅是从函数中打印出来。但它甚至不计算并返回数字的长度,更不用说存储函数中的变量了。我确信这很容易回答,但我无法弄清楚,代码在变量方面很混乱,因为我一直在尝试其他解决方案

import random
import os

def scrambleWord (word_to_scramble, number_of_letters):
        number_of_letters = len(word_to_scramble)
        number_of_letters = len(word_to_scramble) - word_to_scramble.count(" ") # Assign lengh of word minus whitespace to variable
        return word_to_scramble
        return number_of_letters

user_word = input("Enter word\t")
user_count = 0
user_word_scrambled = ""
scrambleWord(user_word_scrambled, user_count)
print("Word to scramble is {0}, and is {1} letters long.".format(user_word, user_count))

【问题讨论】:

  • 当你从一个函数返回时,返回后的代码不会被执行。所以return number_of_letters什么都不做

标签: python function variables


【解决方案1】:

对我来说,轻松编写代码而不是硬算法。您可以计算功能之外的字数,而您只需为您的业务提供一个功能。 无论如何,你的答案是这样的:

def scrambleWord (word_to_scramble, number_of_letters):
        number_of_letters = len(word_to_scramble)
        number_of_letters = len(word_to_scramble) - word_to_scramble.count(" ") # Assign lengh of word minus whitespace to variable
        return number_of_letters,word_to_scramble

【讨论】:

    【解决方案2】:

    您在 scrambleWord 中有两个返回调用,如果您尝试从一个函数返回两个变量,您可以使用元组,例如:

    def scrambleWord (word_to_scramble):
        number_of_letters = len(word_to_scramble) - word_to_scramble.count(" ")
        scramble_word=scramble(word_to_scramble)
        return (scramble_word,number_of_letters)
    

    然后在 main:

    user_word = input("Enter word\t")
    scrambled_word,user_count=scrambleWord(user_word)
    **print the output
    

    打乱字可以使用随机包:import random

    def scramble(word):
        word = list(word)
        random.shuffle(word)
        return ''.join(word)
    

    我建议阅读更多有关函数变量以及它们如何从函数传递和返回的信息,您似乎在通过引用传递和值传递之间混淆了。

    【讨论】:

    • 您不需要使用元组作为返回值。你可以写return a, b, c ...
    • 这也是正确的,这意味着您可以忽略括号,但返回的值的类型永远不会是元组
    • 当然可以,但是将返回值用括号括起来被认为是一种不好的做法
    • 哦,不知道,谢谢,你能详细说明为什么吗?我真的很感兴趣
    • 谢谢大家,但这让我很困惑,行 scrambled_word ,user_count = scrambleWord(user_input) 函数 scrambled_word 接受一个 arg 并返回两个。因此,当声明/将变量传递到函数中并添加 (user_input) 因为没有第二个参数时,我会认为这将是一个错误。抱歉,如果我在尝试了解函数的工作原理并总体上变得更好时有点慢
    猜你喜欢
    • 1970-01-01
    • 2021-12-29
    • 2017-09-23
    • 2021-12-19
    • 2014-07-02
    • 1970-01-01
    • 1970-01-01
    • 2016-10-02
    相关资源
    最近更新 更多