鱼C论坛

 找回密码
 立即注册
查看: 3347|回复: 12

为什么我input的列表,type(each)类型会显示str? 而不是int

[复制链接]
发表于 2016-6-22 17:26:10 | 显示全部楼层 |阅读模式

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

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

x
动动手:1:
s = input('请输入列表:')
i = 0
summ = 0
while(i<len(s) ):
    for every in s:
        print('s中元素的类型是:',type(each) )
        if ((type(each)==int) or (type(each)==float) ):
            print('表明进入if循环')
            summ += each        
        else:
            continue
   
    print('这是含有字符串的求和:%d'%summ)

    i+=1   

为什么print('s中元素的类型是:',type(each) )会显示是‘class==str’
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-6-22 17:26:43 | 显示全部楼层
如题:为什么我input的列表,type(each)类型会显示str? 而不是int
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-22 18:11:28 | 显示全部楼层
要沉贴了吗?。。。。。。。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-22 18:17:33 | 显示全部楼层
input(...)
    input([prompt]) -> string
   
    Read a string from standard input.  The trailing newline is stripped.
    If the user hits EOF (Unix: Ctl-D, Windows: Ctl-Z+Return), raise EOFError.
    On Unix, GNU readline is used if enabled.  The prompt string, if given,
    is printed without a trailing newline before reading.

这个是python的解释,input是从标准输入中读取字符串。所以你要用int或者float强制转换一下。
  1. string = input('')
  2. print(string)
  3. summ = 0
  4. try:
  5.     float('abc')
  6. except ValueError:
  7.     print('when error do')
  8. else:
  9.     print('when no error do')


  10. for each in string:
  11.     print(each)
  12.     try:
  13.         float(each)
  14.     except ValueError:
  15.         print('error')
  16.         continue
  17.     else:
  18.         summ +=float(each)


  19. print(summ)
复制代码
你试试这样来做

评分

参与人数 1荣誉 +3 鱼币 +5 收起 理由
~风介~ + 3 + 5 支持楼主!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-6-22 19:03:54 | 显示全部楼层
荒年 发表于 2016-6-22 18:17
input(...)
    input() -> string
   

ok~~有学习了一个调错的办法:try
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-22 20:31:50 | 显示全部楼层
input得到的只能是字符串。要想直接输入列表,可用下面的语句:
s = eval(input('请输入列表:'))
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-23 10:28:32 | 显示全部楼层
恩恩,谢谢~~我再去看下eval的用法
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-23 10:43:34 | 显示全部楼层
input返回的是字符串形式,需要int护着float转换
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-6-23 18:11:56 | 显示全部楼层
back0893 发表于 2016-6-23 10:43
input返回的是字符串形式,需要int护着float转换

那如果input读入一个列表,用int转换后,会输出什么?是字符串变成了一个列表了吗?里面的元素是变成了整形吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-23 21:33:46 | 显示全部楼层
学习了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-4 08:53:13 | 显示全部楼层
谢谢分享
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-12 17:04:15 | 显示全部楼层
冬雪雪冬 发表于 2016-6-22 20:31
input得到的只能是字符串。要想直接输入列表,可用下面的语句:
s = eval(input('请输入列表:'))

每次看到你回答都能学到更多。。。谢谢啦~~~~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-13 09:37:51 | 显示全部楼层
python 默认的是字符串格式,需要其他格式得转换才能变成其它格式
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-21 11:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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