Skip to main content
 首页 » 编程设计

python之无法理解 *(星号)在 Python 变量赋值中的作用

2025年05月04日15jillzhang

我是编程新手,目前正在学习 Zelle 的“Python 编程:计算机科学导论,第 2 版”。

在做书中的一个练习时,我在理解作者提供的解决方案时遇到了一些困难。 练习基本上是制作一个程序,为一定范围的分数打分。

问题如下: “某位 CS 教授给出了 100 分的考试,评分标准为 90-100:A、80-89:B、70-79:C、60-698:D、<60:F。编写一个程序接受考试成绩作为输入并打印出相应的成绩。”

这是我自己的练习源代码:

score = float(input("Enter your quiz score: ")) 
 
if score >= 90: 
    print("You got an A.") 
elif score >= 80: 
    print("You got a B.") 
elif score >= 70: 
    print("You got a C.") 
elif score >= 60: 
    print("You got a D.") 
else: 
    print("You got a F.") 

它运行良好,根据我的搜索,它是解决此类问题的标准解决方案。

那么,笔者的解决方案如下:

score = eval(input("Enter the score (out of 100): ")) 
grades = 60*"F"+10*"D"+10*"C"+10*"B"+11*"A" 
print("The grade is", grades[score]) 

我发现它更简洁,因为整个 if-elif-else block 可以只用两行来更简洁地表达。 但是,我在尝试理解他的代码的第二行时遇到了麻烦: 成绩 = 60*“F”+10*“D”+10*“C”+10*“B”+11*“A” 这条线究竟是如何工作的?在像这样的变量赋值的情况下,* 有什么作用?

如果已经有一个类似的问题回答了我的查询,请原谅我,但我能找到的最接近的是关于 * 在参数中的作用。 如果是那样的话,我很乐意将链接指向那里。

感谢您的帮助!

请您参考如下方法:

这实际上与变量赋值无关。在 Python 中,您可以将一个字符串乘以一个非负整数;效果是将字符串重复适当的次数。因此,例如,5*"A"+2*"B"是 "AAAAABB"。

(所以在您正在查看的实际代码中,您有 60 个“F”——所以当 0 <= score < 60 时,grades[score] 将是“F”——然后是 10 个“D”——所以当 60 <= score < 70 时 grades[score] 将是“D”——等等。)