鱼C论坛

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

[已解决]请问为什么输入相同,两个代码用input函数的输出不一样呀

[复制链接]
发表于 2022-10-28 18:29:13 | 显示全部楼层 |阅读模式

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

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

x
是因为*params导致的吗?
代码一:
def count(*params):
    yingwen = 'ABCDEFGHIGKLMNOPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz'
    shuzi = '0123456789'
    kongge = ' '
    zifu = '!~@#$%^&*()_{}[]?/|\<>,.`;:'
    l = len(params)
    print(l)
    print(params)
    for i in range(l):
        s1=s2=s3=s4=0
        for each in params[i]:
            if each in yingwen:
                s1 += 1
            if each in shuzi:
                s2 += 1
            if each in kongge:
                s3 += 1
            if each in zifu:
                s4 += 1
        #print('第%d个字符串共有:英文字母%d个,数字%d个,空格%d个,其他字符%d个.'%(i+1,s1,s2,s3,s4))

print('请传入字符串参数:',end = '')
#params = eval(input())
params = input()
count(*params)

输出:
请传入字符串参数:('I love fishc.com.','I love you,you love me')
46
('(', "'", 'I', ' ', 'l', 'o', 'v', 'e', ' ', 'f', 'i', 's', 'h', 'c', '.', 'c', 'o', 'm', '.', "'", ',', "'", 'I', ' ', 'l', 'o', 'v', 'e', ' ', 'y', 'o', 'u', ',', 'y', 'o', 'u', ' ', 'l', 'o', 'v', 'e', ' ', 'm', 'e', "'", ')')

代码二:
a = input('名字:')
print (a)
print(type(a))

输出:
名字:('i love you','you love me')
('i love you','you love me')
最佳答案
2022-10-28 19:03:29
本帖最后由 jackz007 于 2022-10-28 19:40 编辑
  1. def count(* params):
  2.     yingwen = 'ABCDEFGHIGKLMNOPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz'
  3.     shuzi = '0123456789'
  4.     kongge = ' '
  5.     zifu = '!~@#$%^&*()_{}[]?/|\<>,.`;:'
  6.     l = len(params)
  7.     print(l)
  8.     print(params)
  9.     for i in range(l):
  10.         s1=s2=s3=s4=0
  11.         for each in params[i]:
  12.             if each in yingwen:
  13.                 s1 += 1
  14.             if each in shuzi:
  15.                 s2 += 1
  16.             if each in kongge:
  17.                 s3 += 1
  18.             if each in zifu:
  19.                 s4 += 1
  20.         print('第%d个字符串共有:英文字母%d个,数字%d个,空格%d个,其他字符%d个.'%(i+1,s1,s2,s3,s4))

  21. params = input('请传入字符串参数:')
  22. eval('count' + params)
复制代码

        运行实况:
  1. D:\[00.Exerciese.2022]\Python>python x.py
  2. 请传入字符串参数:('I love fishc.com.','I love you,you love me')
  3. 2
  4. ('I love fishc.com.', 'I love you,you love me')
  5. 第1个字符串共有:英文字母13个,数字0个,空格2个,其他字符2个.
  6. 第2个字符串共有:英文字母17个,数字0个,空格4个,其他字符1个.

  7. D:\[00.Exerciese.2022]\Python>
复制代码

        用这种方式调用一个函数,我也是
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-10-28 19:03:29 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-10-28 19:40 编辑
  1. def count(* params):
  2.     yingwen = 'ABCDEFGHIGKLMNOPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz'
  3.     shuzi = '0123456789'
  4.     kongge = ' '
  5.     zifu = '!~@#$%^&*()_{}[]?/|\<>,.`;:'
  6.     l = len(params)
  7.     print(l)
  8.     print(params)
  9.     for i in range(l):
  10.         s1=s2=s3=s4=0
  11.         for each in params[i]:
  12.             if each in yingwen:
  13.                 s1 += 1
  14.             if each in shuzi:
  15.                 s2 += 1
  16.             if each in kongge:
  17.                 s3 += 1
  18.             if each in zifu:
  19.                 s4 += 1
  20.         print('第%d个字符串共有:英文字母%d个,数字%d个,空格%d个,其他字符%d个.'%(i+1,s1,s2,s3,s4))

  21. params = input('请传入字符串参数:')
  22. eval('count' + params)
复制代码

        运行实况:
  1. D:\[00.Exerciese.2022]\Python>python x.py
  2. 请传入字符串参数:('I love fishc.com.','I love you,you love me')
  3. 2
  4. ('I love fishc.com.', 'I love you,you love me')
  5. 第1个字符串共有:英文字母13个,数字0个,空格2个,其他字符2个.
  6. 第2个字符串共有:英文字母17个,数字0个,空格4个,其他字符1个.

  7. D:\[00.Exerciese.2022]\Python>
复制代码

        用这种方式调用一个函数,我也是
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-28 21:42:38 | 显示全部楼层
jackz007 发表于 2022-10-28 19:03
运行实况:

        用这种方式调用一个函数,我也是醉了

请问可以讲一下最后一句eval('count' + params)吗?加号也可以调用函数的参数吗?初学者不懂得太多了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-28 21:55:34 | 显示全部楼层
本帖最后由 jackz007 于 2022-10-28 21:59 编辑
  1. eval('count' + params)
复制代码

      这是在执行字符串形式的 Python 语句,括号里的参数就是字符串形式的 Python 语句。
      研究一下这个代码也许可以明白一些:
  1. params = input('请传入字符串参数:')
  2. print('count' + params)
复制代码

       运行实况:
  1. D:\[00.Exerciese.2022]\Python>python x.py
  2. 请传入字符串参数:('I love fishc.com.','I love you,you love me')
  3. count('I love fishc.com.','I love you,you love me')

  4. D:\[00.Exerciese.2022]\Python>
复制代码

      没错,最后那一句所执行的就是这一句:
  1. count('I love fishc.com.','I love you,you love me')
复制代码

      能把字符串当成 Python 语句来执行,这就是 BIF eval() 的神奇之处。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-29 09:25:54 | 显示全部楼层
jackz007 发表于 2022-10-28 21:55
这是在执行字符串形式的 Python 语句,括号里的参数就是字符串形式的 Python 语句。
      研究一 ...

好哒!谢谢你!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-26 02:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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