python - 如何访问函数内部的变量
问题描述
我正在尝试执行 4 个步骤,向用户询问“关键字符”和字符串,然后将字符串大写,然后从字符串中删除关键字符的所有实例。这些步骤中的每一个都应该是它自己的功能。但是,第 3 步和第 4 步依赖于访问位于第 1 步和第 2 步的函数中的变量。
我已经阅读了一些关于此的主题,例如以下内容... 如何访问在python函数中声明的变量 ...这表明您必须在定义变量后“返回”变量,但我已经做到了(我想想),它并没有改变任何东西。
def main():
get_key_character()
get_string()
sentence_capitalizer()
remove_key_character()
def get_key_character():
key_character=str(input("Please enter a SINGLE character to act as key? "))
if len(key_character)!=1:
get_key_character()
else:
return key_character
def get_string():
phrase_input=str(input("Please enter a phrase or sentence >=4 and <=500 characters: "))
if len(phrase_input) <4 or len(phrase_input)>500:
get_string()
else:
return phrase_input
def sentence_capitalizer():
import re
sentence_capitalized=(re.sub(r"(^|\?|\.|\!)\s*(\w)", lambda q: q[0].upper(), phrase_input))
return sentence_capitalized
def remove_key_character():
sentence_capitalized.replace(key_character, "")
main()
错误:def sentence_capitalizer 中未定义名称短语输入和 def remove_key_character 中未定义名称 key_character
解决方案
您缺少的是返回的值必须存储在另一个变量中。例如,
def test():
x = 1
return x
def main():
z = test()
print(z)
main()
该程序将输出:
1
您必须将函数的输出作为参数传递给不同函数的后续调用。我已经修改了你的代码,让它像这样工作。
def main():
key_character = get_key_character()
phrase_input = get_string()
sentence_capitalized = sentence_capitalizer(phrase_input)
removed = remove_key_character(key_character, sentence_capitalized)
print(removed)
def get_key_character():
key_character=""
while len(key_character) < 1:
key_character=str(input("Please enter a SINGLE character to act as key? "))
return key_character
def get_string():
phrase_input=str(input("Please enter a phrase or sentence >=4 and <=500 characters: "))
if len(phrase_input) <4 or len(phrase_input)>500:
get_string()
else:
return phrase_input
def sentence_capitalizer(phrase_input):
import re
sentence_capitalized=(re.sub(r"(^|\?|\.|\!)\s*(\w)", lambda q: q[0].upper(), phrase_input))
return sentence_capitalized
def remove_key_character(key_character, sentence_capitalized):
return sentence_capitalized.replace(key_character, "")
main()
推荐阅读
- node.js - 如何在项目范围内扩充模块?
- liquibase - Liquibase 为包含的 SQL 文件提供语法错误,否则是正确的
- image-stitching - 如何使用 pix4D 软件拼接无人机图像?
- amazon-web-services - 我在 AWS Athena 上创建的这个表/视图是否会随着 s3 中的数据更新而更新
- python - 如何获取标题(h3)标签之间的文本?
- visual-studio - 由于我已将 VS 项目放在 OneDrive 上,因此出现错误:无法处理文件 MainForm.resx... 我无法再编译
- tensorflow - Python 3.4-64位-Win10中TensorFlow安装问题
- eclipse-cdt - 加载共享库时出现 GTK 3 Eclipse 错误:libgtk-3.so.0
- r - 抓取一个内的所有链接R中的标签
- react-native - 重新渲染 React Swiper 组件