鱼C论坛

 找回密码
 立即注册
查看: 3217|回复: 7

自己写的3个数比大小的小程序,99.9%接近我的要求,只有一处我解决不了!!

[复制链接]
发表于 2020-1-10 11:01:21 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 big501 于 2020-1-10 11:02 编辑

# 要求x,y,z随机输入三个数字。
# 除非输入finish,一直进行比较。--实现
# x=y=z,重新输入--实现
# 当x=非数字的时候,能重新输入!,这个程序只有在第一次输入字母时能重新输入,一旦进入比较大小的循环,再输入数字,就会报错!(强迫症患者,大家见谅!!)


key = input('是否继续输入? yes or no\n')
while key != 'no':
    try:
        x = int(input('x='))
        y = int(input('y='))
        z = int(input('z='))
    except:
        x = input('请输入数字!')        
    else:
        while True:
            if x != y or x !=z:
                num1 = max(x, y, z)
                num2 = min(x, y, z)
                num3 = x + y + z - num1 - num2
                print(num1,num3,num2)
            print('请重新输入')
            # 如果此时输入字母,就会报错!!好像没法避免了
            x = int(input('x='))
            y = int(input('y='))
            z = int(input('z='))
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-1-10 11:25:44 | 显示全部楼层
本帖最后由 凌九霄 于 2020-1-10 12:20 编辑

你用个try结构去处理就好了,你的循环应该在try结构之外
  1. key = ''

  2. while key != 'no':
  3.     try:
  4.         x = int(input('x='))
  5.         y = int(input('y='))
  6.         z = int(input('z='))
  7.         if x != y or x !=z:
  8.             num1 = max(x, y, z)
  9.             num2 = min(x, y, z)
  10.             num3 = x + y + z - num1 - num2
  11.             print(num1,num3,num2)
  12.          key = input('是否继续输入? yes or no\n')
  13.          continue
  14.     except :
  15.         print('请输入数字')
  16.         continue
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-10 11:54:12 | 显示全部楼层
本帖最后由 jackz007 于 2020-1-10 12:47 编辑

        楼主试试这个代码呢?
  1. while True:
  2.     t = input('请输入三个数字:') . strip() . split()
  3.     if len(t) == 1 and t[0] == 'finish':
  4.             break
  5.     elif len(t) == 3:
  6.         try:
  7.             d = [int(x) for x in t]
  8.             if d[0] == d[1] or d[1] == d[2] or d[0] == d[2]:
  9.                 print('*** 数字之间不能相等 ***')
  10.             else:
  11.                 d . sort()
  12.                 print("\t%d\t%d\t%d" % (d[0] , d[1] , d[2]))
  13.         except:
  14.             print('*** 请输入数字 ***')
  15.     else:
  16.         print('*** 输入内容无效 ***')
  17.     print()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-10 12:14:02 | 显示全部楼层
jackz007 发表于 2020-1-10 11:54
楼主试试这个代码呢?

亲亲 初学者 根本看不懂你写的啥!不过还是要谢谢你!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-10 12:15:29 | 显示全部楼层
试试这个
  1. key = x = y =z =''

  2. while key != 'no':
  3.    
  4.     # 使用isdigit()方法来判断输入的是否为数值,如果是则返回True,否则返回False
  5.     while not x.isdigit():
  6.         x = input('请输入数字!x=')
  7.     else:
  8.         x = int(x)

  9.     while not y.isdigit():
  10.         y = input('请输入数字!y=')
  11.     else:
  12.         y = int(y)

  13.     while not z.isdigit():
  14.         z = input('请输入数字!z=')
  15.     else:
  16.         z = int(z)


  17.     if x != y or x !=z:
  18.         num1 = max(x, y, z)
  19.         num2 = min(x, y, z)
  20.         num3 = x + y + z - num1 - num2
  21.         print(num1,num3,num2)

  22.         x = y =z =''
  23.         key = input('是否继续输入? yes or no\n')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-10 12:21:13 | 显示全部楼层
本帖最后由 jackz007 于 2020-1-10 12:53 编辑
big501 发表于 2020-1-10 12:14
亲亲 初学者 根本看不懂你写的啥!不过还是要谢谢你!


       代码可以看不懂,但是不能失了眼光和水准,关键问题是,这份代码是否能够完美解决你的问题?我很佩服你,不懂也能这么理直气壮!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-10 13:17:20 | 显示全部楼层
jackz007 发表于 2020-1-10 12:21
代码可以看不懂,但是不能失了眼光和水准,关键问题是,这份代码是否能够完美解决你的问题?我 ...

你这是再 打击 我吗!??我真的看不懂!!我才看到第8节!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-11 06:07:21 | 显示全部楼层
其实你的问题就是一直改不了key==yes 所以永远退出不了循环,简单修改一下就好。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-21 18:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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