Python编写Adidas URL生成器遇IndentationError等错误求助
帮你修复Adidas URL生成器的代码问题
嘿,作为Python新手,复制代码踩坑太正常啦!我帮你把这段代码里的问题逐个揪出来,再给你修正后的版本,保证能跑起来~
先说说你遇到的错误根源:
- IndentationError:Python对缩进要求严格,函数内部的所有代码必须统一缩进(一般是4个空格),你原代码里函数定义后直接写逻辑,没有缩进,肯定报错。
- expected white space around operator:你用了
x代替乘法符号*,而且运算符前后没加空格,Python不认x当乘法,还会要求运算符周围留空格(PEP8规范)。 - expected in indented block:还是缩进问题,函数里的代码没缩进,Python找不到缩进块就会报这个错。
还有代码里的其他逻辑/语法问题:
- 函数参数写错了:
def URLGen(Model. size)里的句号是错误的,应该用逗号分隔参数,而且变量名尽量小写(符合Python命名规范)。 - 变量未定义就使用:
RawSize = ShoeSize + int(RawSize)里的RawSize还没赋值就拿来用了,逻辑完全不对。 - 字符串没加引号:URL开头的
https://www.adidas.com/us/是字符串,必须用引号包起来。 - 输入函数问题:Python3里没有
raw_input,要用input();而且input('Size: ')得到的是字符串,要转成整数/浮点数才能计算。 - 函数调用错误:
URLGen(Model. size)里的句号要改成逗号,变量名也要对应函数参数的小写。
修正后的完整代码:
def url_gen(model, size): # BaseSize对应鞋码6.5的基准值 base_size = 500 shoe_size = float(size) # 计算和基准码的差值,转换为对应编码 size_diff = shoe_size - 6.5 size_code = size_diff * 20 raw_size = base_size + size_code # 拼接最终URL url = f"https://www.adidas.com/us/{model}.html?forceSelSize={model}{int(raw_size)}" return url # 获取用户输入 model = input('Model #: ') size = input('Size: ') # 调用函数生成URL final_url = url_gen(model, size) print(final_url)
我做的关键修改:
- 把函数名和变量名改成小写加下划线的规范(PEP8),可读性更强。
- 给函数内部代码统一缩进4个空格,解决缩进错误。
- 把乘法的
x改成*,运算符前后加空格,解决运算符相关错误。 - 修复了变量计算逻辑:先定义
size_diff,再计算size_code,最后基于base_size得到raw_size,避免未定义变量的问题。 - 用f-string拼接URL,比原来的字符串相加更简洁易读。
- 把
raw_input改成Python3的input(),并把输入的size转成浮点数,方便计算。 - 修正了函数调用的参数格式,用逗号分隔参数。
你可以把这段代码复制过去试试,输入型号和鞋码就能生成正确的Adidas商品URL啦~
内容的提问来源于stack exchange,提问作者Logan Jones
相关产品推荐
相关产品推荐

