鱼C论坛

 找回密码
 立即注册
查看: 1703|回复: 4

嵌套循环(break,continue,pass)

[复制链接]
发表于 2023-8-6 13:33:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目:
编写 Python 代码,让用户使用 while 循环输入最多 20 次(含)数字。获取用户输入的数字总数。如果用户输入负数,则立即终止循环并打印截至该点的总数。如果用户输入的数字可以被 9 整除,则不要使用该数字来计算总数。使用中断并继续执行这些条件。

我的答案:

input_time = 1
number_user = int(input("Enter a number:"))
sum_number = number_user
while input_time <= 20:
    input_time += 1
    number_user = int(input("Enter a number:"))
    if number_user%9 == 0:
        pass
    else:
        sum_number += number_user
    if number_user < 0:
        break
print(sum_number)

求大佬指导,我写的代码正确与否,还需要哪些改正和改进呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-6 13:33:24 | 显示全部楼层
问题分析:

你的代码几乎是正确的,但有一处小错误。在计算总数时,你使用了"pass"语句来跳过可以被9整除的数字,但你应该使用"continue"语句。

此外,我还希望提供一些建议来改进你的代码:

1. 当用户输入超过20次后也可以中断循环,如果用户没有输入负数,则不需要继续等待输入。
2. 可以给用户一个友好的提示,告诉他们可以输入负数来中断循环。

修改后的代码:
input_time = 1number_user = int(input("Enter a number: "))sum_number = number_userwhile input_time <= 20:    if number_user % 9 == 0:        continue    elif number_user < 0:        break    input_time += 1    number_user = int(input("Enter a number: "))    sum_number += number_userprint("Total sum:", sum_number)
希望这能对你有所帮助!如果你有任何疑问,请随时提出。

如果回答对你有帮助,请给我一个最佳答案!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-6 13:33:29 | 显示全部楼层
你的代码基本上是正确的,但有一些改进的地方:

1. 在 while 循环中,你可以使用一个无限循环,并在满足退出条件时使用 break 语句来终止循环。这样可以避免重复的代码。
2. 你可以使用 continue 语句来跳过输入可以被 9 整除的数字,而不是使用 pass 语句。continue 语句会终止当前循环的迭代,并继续下一次迭代。
3. 当用户输入负数时,你可以在打印截至该点的总数之前使用一个 if 语句进行判断,以避免将负数包含在总数中。

下面是改进后的代码:

sum_number = 0
while True:
    number_user = int(input("Enter a number:"))
    if number_user < 0:
        break
    if number_user % 9 == 0:
        continue
    sum_number += number_user

print("总数为:", sum_number)

这样,代码更加简洁和易读,同时也遵循了题目中的要求。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-6 13:33:34 | 显示全部楼层
代码正确性分析:

你的代码基本上实现了题目要求的功能,可以接受用户最多20次输入数字,并计算总数。当用户输入负数时,立即终止循环并打印截至该点的总数。如果输入的数字可以被9整除,则不使用该数字来计算总数。

代码改进建议:

1. 防止用户输入非数字值导致的错误:在接受用户输入数字之前,最好添加异常处理机制,以防止用户输入非数字字符导致的错误。
2. 减少重复的代码:可以考虑优化代码结构,减少对input函数和判断条件的重复使用。
3. 更友好的用户提示:可以在用户输入时提供一些友好的提示信息,例如提示用户输入次数等。
4. 使用+=操作符简化代码:可以使用+=操作符来简化计数器的自增操作,如input_time += 1可以简化为input_time += 1
5. 可选:提供更多错误处理和边界情况的考虑,例如用户连续多次输入负数等情况。

以下是经过改进的代码示例:
input_time = 1sum_number = 0while input_time <= 20:    try:        number_user = int(input("Enter a number: "))        input_time += 1        if number_user < 0:            break        if number_user % 9 == 0:            continue        sum_number += number_user    except ValueError:        print("Invalid input. Please enter a valid number.")print("Total sum:", sum_number)
这样的代码不仅改进了一些细节,还增加了异常处理机制,提供了更友好的用户提示。希望对你有所帮助!如果有任何疑问,请随时提出。

如果回答对你有帮助,请给我一个最佳答案!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-7 08:03:15 | 显示全部楼层
本帖最后由 陶远航 于 2023-8-7 08:05 编辑

你好,我很高兴你对 Python 编程感兴趣。

你写的代码基本上是正确的,但是有一些小问题和改进的地方。我会一一指出并给出建议。

- 你的代码没有考虑到用户输入的不是数字的情况,这可能会导致程序出错。你可以使用 try-except 语句来捕获并处理这种异常,例如:
try:
    number_user = int(input("Enter a number:"))
except ValueError:
    print("Invalid input. Please enter a number.")

- 你的代码在第一次输入数字时就把它加到总数里,这可能会导致第一次输入负数或者能被 9 整除的数时,总数不正确。你可以把第一次输入放到 while 循环里,并在循环开始前初始化总数为 0,例如:
sum_number = 0
while input_time <= 20:
    input_time += 1
    try:
        number_user = int(input("Enter a number:"))
    except ValueError:
        print("Invalid input. Please enter a number.")
        continue # skip the rest of the loop and start the next iteration
    if number_user < 0:
        break
    if number_user%9 == 0:
        pass
    else:
        sum_number += number_user

- 你的代码使用了 pass 语句来跳过能被 9 整除的数,这是可以的,但是也可以使用 continue 语句来直接进入下一次循环,这样可以省略 else 子句,例如:
if number_user%9 == 0:
    continue # skip the rest of the loop and start the next iteration
sum_number += number_user # only executed when the number is not divisible by 9

- 你的代码没有给用户一个明确的提示,让他们知道循环结束了。你可以在循环外面打印一个消息,例如:
print("The loop is over.")

- 你的代码没有使用 else 子句来处理正常结束循环的情况。如果用户输入了 20 次数字,而没有输入负数,那么循环会自然结束,此时你可以在 else 子句里打印一个消息,例如:
while input_time <= 20:
    # loop body
else:
    print("You have entered 20 numbers.")

综上所述,你可以把你的代码改写成这样:
input_time = 0
sum_number = 0
while input_time < 20:
    input_time += 1
    try:
        number_user = int(input("Enter a number:"))
    except ValueError:
        print("Invalid input. Please enter a number.")
        continue # skip the rest of the loop and start the next iteration
    if number_user < 0:
        break # exit the loop immediately
    if number_user%9 == 0:
        continue # skip the rest of the loop and start the next iteration
    sum_number += number_user # only executed when the number is not negative or divisible by 9
else:
    print("You have entered 20 numbers.") # only executed when the loop ends normally
print(sum_number) # print the final sum
print("The loop is over.") # print a message to indicate the end of the loop


希望这些建议对你有帮助。


求一个最佳答案谢谢啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 01:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表