python - 在另一个函数中调用一个函数
问题描述
我正在学习编码,并且正在尝试越来越多地学习使用函数。我在这里有 3 个不同的函数,并且我在user_menu()函数方面没有取得太大进展,因为我被 if 语句/构造中的最后一段代码卡住了。
无论我做什么或添加什么代码,times_table() 函数都会不断重复。它停留在 user_menu() 函数中if语句的最后一行。我能做些什么来解决这个问题?
我还想在times_table ( )函数下的user_menu() 函数中添加 times_table2()函数。
我还想就如何将两个 times_table() 函数组合成一个函数同时保持功能提出建议。我没有在网上或书中遇到过一个例子,说实话很令人沮丧。
我会很感激一些信息,可能还有一些网站可以获得更多资源。
提前致以问候和感谢。
def user_menu():
options = ["1. Would you like to learn to multiply two numbers of your choice?",
"2. Would you like to learn to multiply a number in a table?"]
print(*options, sep="\n")
user_input = int(input("Please select from the list above: "))
if user_input == 1:
times_table(multiple="Please enter the number you wish to learn to multiply with")
def times_table(multiple):
while True:
multiple_text = input(multiple)
try:
multiple_int = int(multiple_text)
except ValueError:
print("Please enter a numerical value!")
continue
return multiple_int
def times_table2(multiple):
while True:
multiple_text = input(multiple)
try:
multiple_int = int(multiple_text)
except ValueError:
print("Please enter a numerical value!")
continue
return multiple_int
解决方案
您应该return
在获得正确的值后使用
def times_table(multiple):
while True:
multiple_text = input(multiple)
try:
multiple_int = int(multiple_text)
return multiple_int
except ValueError:
print("Please enter a numerical value!")
最终使用break
存在while
循环然后使用return
def times_table(multiple):
while True:
multiple_text = input(multiple)
try:
multiple_int = int(multiple_text)
break # exit loop
except ValueError:
print("Please enter a numerical value!")
# after `while` loop
return multiple_int
编辑:正如我在评论中所说,你可以用不同的方式来做。如果你真的需要使用continue
,那么按照@Kevin 的建议做
def times_table(multiple):
while True:
multiple_text = input(multiple)
try:
multiple_int = int(multiple_text)
except ValueError:
print("Please enter a numerical value!")
continue
# inside `while` but not in `except`
return multiple_int
在第二个版本中,您还可以使用变量True/False
而不是break
def times_table(multiple):
repeat = True
while repeat:
multiple_text = input(multiple)
try:
multiple_int = int(multiple_text)
repeat = False # exit loop
except ValueError:
print("Please enter a numerical value!")
# after `while` loop
return multiple_int
推荐阅读
- android - OnClickListener 在我的适配器类中不起作用
- c# - 如何在 wpf 的用户控件中注册事件处理程序
- json - 使用 Json 解析器在 Inno 设置中解析 JSON
- scala - Scala 聚合函数与 Spark RDD 聚合函数
- java - 'JsonParser' 是抽象的;无法实例化 0
- angular - Chatwindow 不会使用 signalr + angular + .net core 更新来自其他用户的回复消息
- python - tensorflow 2.0版本如何实现tensorflow 1.0的make_one_shot_iterator()函数?
- flutter - Flutter中如何将多个参数传递给调用SfCalender的onTap的函数?
- javascript - 在下一个路由调用中,在一个处理函数中的请求对象上设置的值丢失(未定义)
- python - 如何在 /accounts/register 处修复 UnboundLocalError