最后的else为什么不用缩进

猜数字游戏的设计:
系统生成一个1-100内随机数
用户输入数字与系统生成的随机数比较(一共5次机会)
1.判断输入的是否为数字 若输入的不是数字 提示重新输入
2.若输入的数字比生成的随机数大(小),提示输入数字过大(过小)
3.若输入数字余生成数字相等,提示回答正确
4.五次都没回答正确 提示很遗憾,未猜对

最后一行的else为什么不用缩进 还是我写的代码有问题

img

您的最后的 else 实则是多余的,for 循环完成5次,自然就执行到您的最后一行 print() 了。您的写法有问题,应该报错才对,因为 else 不属于前面的if代码块。else应该要与for或者while配对用才可以。我没试过单独存在。

  • 居然不会报错
#!sur/bin/nve python
# coding: utf-8

n = int(input(f"\n{'输入一个整数:':>12}"))

for i in range(3):

    if n > 50:
        print(f"\n{n:>8}大于50")
    elif n > 40:
        print(f"\n{n:>8}大于40")
    elif n > 30:
        print(f"\n{n:>8}大于30")


else:
    print(f"\n您的输入是{n:>8}!")

#!sur/bin/nve python
# coding: utf-8

n = int(input(f"\n{'输入一个整数:':>12}"))

for i in range(3):

    if n > 50:
        print(f"\n{n:>8}大于50")
    elif n > 40:
        print(f"\n{n:>8}大于40")
    elif n > 30:
        print(f"\n{n:>8}大于30")

#else:
print(f"\n您的输入是{n:>8}!")

经测试,有没得else,效果一样。

img

请翻阅我的学习笔记——


if...else...:如果不满足条件,执行else的语句。
for...else...:for循环全部正常执行完,会执行else语句;如果循环中因break中断退出,就不会执行else语句。
while...else...和for...else...用法一样。
感觉try...else...也类似,执行中没有异常,就会执行else语句;如果捕获到异常,就不会执行else语句。

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7728679
  • 你也可以参考下这篇文章:数值分析第一次作业-牛顿迭代法求解二元非线性方程组
  • 除此之外, 这篇博客: 【数字图像处理思考】第三章图像的空域变换中的 1、假设你有两张同一建筑物的照片,这两张照片是不同的人在同一天站在同一地点上拍下的,时间相差4个小时,在这4个小时中,有人从该建筑物的某个窗口射击了三枪。负责调查的侦探不知道哪间办公室是事发房间,而对胶片的肉眼视觉检查也无法表明在这段时间内有哪扇窗户被打开或关上,你能帮助他吗? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 首先要处理的问题是亮度问题,因为拍摄时间不一致导致的亮度差异可以使用灰度均衡来处理,然后进行图像相减,观察图像差异,确定哪个窗户发生了变化。

  • 您还可以看一下 黄菊华老师的基于网页的个人音乐播放器系统 毕业设计毕设源码(含后台和源代码)课程中的 网页音乐播放器系统-源代码分析小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    答案:

    最后一行的else语句不需要缩进。如果把else语句缩进,它将成为if语句的一部分,从而产生语法错误。

    为了让猜数字游戏更加高效和易于理解,可以采用以下优化方式:

    1.将生成随机数的代码封装到一个函数中,以便在需要多次生成随机数时方便调用。函数可以采用random库生成随机整数。

    2.将比较用户输入和随机数的代码封装到一个函数中,以便在需要多次比较时方便调用。函数可以采用if语句实现。

    3.采用while循环来让用户有5次机会猜测。在每轮循环中,更新剩余次数,并提示用户输入。

    4.使用break语句来跳出循环,当用户猜对或猜错5次时,都应该跳出循环。

    下面是代码示例:

    import random
    
    def generate_random_number():
        """生成1-100范围内的随机整数"""
        return random.randint(1, 100)
    
    def compare_numbers(user_input, random_number):
        """判断用户输入与随机数的大小关系"""
        if user_input < random_number:
            print("输入数字过小")
        elif user_input > random_number:
            print("输入数字过大")
        else:
            print("恭喜你猜对了!")
            return True
        return False
    
    # 主函数
    def guess_number_game():
        # 生成随机数
        random_number = generate_random_number()
        # 初始化剩余次数
        remain_chance = 5
        # 提示用户输入,直到猜对或者机会用尽
        while remain_chance > 0:
            user_input = input("请输入1-100之间的整数:")
            # 判断用户输入是否为数字,如果不是数字,重新输入
            if not user_input.isdigit():
                print('输入不是数字,请重新输入')
                remain_chance -= 1
                continue
            # 将用户输入转换为整数
            user_input = int(user_input)
            # 对比用户输入和随机数
            if compare_numbers(user_input, random_number):
                break
            # 剩余次数减1
            remain_chance -= 1
            # 提示剩余次数
            print("您还剩余 %d 次机会" % remain_chance)
    
        else:
            print("很遗憾,您未猜对。正确答案是 %d" % random_number)
    
    # 调用主函数开始游戏
    guess_number_game()