wjhzj 发表于 2022-10-28 18:29:13

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

是因为*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:
            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')

jackz007 发表于 2022-10-28 19:03:29

本帖最后由 jackz007 于 2022-10-28 19:40 编辑

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:
            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))

params = input('请传入字符串参数:')
eval('count' + params)
      运行实况:
D:\\Python>python x.py
请传入字符串参数:('I love fishc.com.','I love you,you love me')
2
('I love fishc.com.', 'I love you,you love me')
第1个字符串共有:英文字母13个,数字0个,空格2个,其他字符2个.
第2个字符串共有:英文字母17个,数字0个,空格4个,其他字符1个.

D:\\Python>
      用这种方式调用一个函数,我也是醉了

wjhzj 发表于 2022-10-28 21:42:38

jackz007 发表于 2022-10-28 19:03
运行实况:

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

请问可以讲一下最后一句eval('count' + params)吗?加号也可以调用函数的参数吗?初学者不懂得太多了{:5_111:}

jackz007 发表于 2022-10-28 21:55:34

本帖最后由 jackz007 于 2022-10-28 21:59 编辑

eval('count' + params)
      这是在执行字符串形式的 Python 语句,括号里的参数就是字符串形式的 Python 语句。
      研究一下这个代码也许可以明白一些:
params = input('请传入字符串参数:')
print('count' + params)
       运行实况:
D:\\Python>python x.py
请传入字符串参数:('I love fishc.com.','I love you,you love me')
count('I love fishc.com.','I love you,you love me')

D:\\Python>
      没错,最后那一句所执行的就是这一句:
count('I love fishc.com.','I love you,you love me')
      能把字符串当成 Python 语句来执行,这就是 BIF eval() 的神奇之处。

wjhzj 发表于 2022-10-29 09:25:54

jackz007 发表于 2022-10-28 21:55
这是在执行字符串形式的 Python 语句,括号里的参数就是字符串形式的 Python 语句。
      研究一 ...

好哒!谢谢你!{:9_228:}
页: [1]
查看完整版本: 请问为什么输入相同,两个代码用input函数的输出不一样呀