鱼C论坛

 找回密码
 立即注册
查看: 2366|回复: 9

[已解决]练习题--大小输出

[复制链接]
发表于 2022-9-21 17:49:44 | 显示全部楼层 |阅读模式
18鱼币
题目:输入三个整数x,y,z,请把这三个数由小到大输出


不懂得点:
len = []
len获取元素的长度,但是为什么要等于空字符串,这一步骤的操作有什么意义

k = int(input("请输入比较的数字数目:"))
k是赋值变量,int是转为整数,inpu的是用户输入的数值
当用户输入数字,就会赋值在k的变量

for i in range(k):
for in是循环,range是生成一个数字序列
先用range生成一个k的数字序列,比如说用户输入52,k等于52,用range就会生成一个(0-52)的数字序列,然后再将range(k)赋值给i,所以i 等于(0-52)

k = int(input("请逐个输入比较的数字:"))
k是赋值变量,int是转为整数,inpu的是用户输入的数值
当用户输入数字,就会赋值在k的变量

len.append(k)
len是获取元素的长度,append是在列表末尾添加新的对象在k的变量中
但是为什么会有2个k的变量,是有什么目的吗?为什么有这样做?
那len.append(k)是获取k = int(input("请逐个输入比较的数字:"))的元素吧
如果这个k输入63,是不是会把(0-63)添加在(0-52)的后面?
还是会怎么处理

len.sort()
len是获取长度,sort是从小到大的排序

print("比较后从小到大排序为:"+str(len))
print打印,"比较后从小到大排序为:"+str(len),为什么要加+str(len),是有什么含义吗?
str是将对象 len 转换为字符串、
为什么要转换成字符串,不可以以列表的形式展开吗?
最佳答案
2022-9-21 17:49:45
  1. d = sorted(map(int , input('输入 3 个数 : ') . split()))
  2. print(*d)
复制代码

如果是你做,会是什么样的思路?

如果是你做,会是什么样的思路?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-21 17:49:45 | 显示全部楼层    本楼为最佳答案   
  1. d = sorted(map(int , input('输入 3 个数 : ') . split()))
  2. print(*d)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-21 22:46:45 | 显示全部楼层
这里的len是变量名,定义一个空列表len, len.apped(k)是把遍历后的整数,添加进空列表中,最后print是把列表转成字符串输出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-21 22:52:31 | 显示全部楼层
本帖最后由 70038462 于 2022-9-21 23:04 编辑
70038462 发表于 2022-9-21 22:46
这里的len是变量名,定义一个空列表len, len.apped(k)是把遍历后的整数,添加进空列表中,最后print是把列 ...

nums = []
for i in range(3):
    new_nums = int(input('请输入正整数:'))
    nums.append(new_nums)
nums.sort()
print(f'排序后的数是{nums}')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-21 23:04:39 | 显示全部楼层
nums = []
for i in range(3):
    new_nums = int(input('请输入正整数:'))
    nums.append(new_nums)
nums.sort()
print(f'排序后的数是{nums}')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-25 11:40:37 | 显示全部楼层
len在这里不是函数只是一个空列表的名字;str类型后面也要加str,不然会报错吧。
我觉得可以用冒泡排序,这样就更麻烦了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-25 12:02:35 | 显示全部楼层
秋鹿姚 发表于 2022-9-25 11:40
len在这里不是函数只是一个空列表的名字;str类型后面也要加str,不然会报错吧。
我觉得可以用冒泡排序, ...

for i in range(0,len(a)):
     for j in range(len(a)-1,i,-1):
         if a[j]<a[j-1]:
             key=a[j]
             a[j]=a[j-1]
             a[j-1]=key
这样是不是看着好看一点?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-25 12:55:17 | 显示全部楼层
首先第一个k的作用是:比较多少个数字,因为题目说了比较x,y,z三个数,所以第一个k的输入值为3。如果你输入8,他就会比较8个数的大小。
第二个k就是输入你要比较大小的数字了,然后把每次输入的数字加到len[]这个列表里面,至于你这个列表里面能够比较多少个数字,取决于你第一个k选的值,选了8,就可以比较8个数字的大小。(第二个k可以用其他字母代替)
为什么要加str这个符号呢,因为前面的汉字加了字符串的符号,为了保持一致(不一致就不能使用+号),所以对len[]这个列表也要加str。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-25 14:38:19 | 显示全部楼层
因为这时print函数输出的是字符串,也可以使用format,如:
  1. print(f"从小到大依次为:{len}")
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-25 19:51:29 | 显示全部楼层


这个程序存在的问题:
1、避免使用 len 作为变量
2、在 for 循环体内的变量不要使用 k , 另选变量 j

  1. num=[]
  2. k=int(input("需要几个数字:"))
  3. for i in range (k):
  4.     j=int(input("请逐个输入比较的数字:"))
  5.     num.append(j)
  6. num.sort()
  7. print("比较后从小到大排序为"+str(num))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 20:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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